File

src/lib/service/events/event.service.ts

Description

Triggerable and Subscribable events

Index

Properties
Methods

Methods

on
on(...types: string[])

Listen on a triggered event

Parameters :
Name Type Optional Description
types string[] no

Type/key of the event

Returns : Observable<Event>
trigger
trigger(type: string, data?: any)

Trigger an global event

Parameters :
Name Type Optional Description
type string no

Type/key of the event

data any yes

Data to be send along with the event

Returns : void

Properties

Public event$
event$: Observable<any>
Type : Observable<any>
Default value : this.eventSource.asObservable()

Eventstream to subscribe to

event.service

import {filter} from 'rxjs/operators';
import {Injectable} from '@angular/core';
import {Observable, Subject} from 'rxjs';
import {Event} from '../../interface/event.interface'

/**
 * Triggerable and Subscribable events
 */
@Injectable({
  providedIn: 'root'
})
export class EventService {

  private eventSource = new Subject<Event>();
  /**
   * Eventstream to subscribe to
   */
  public event$: Observable<any> = this.eventSource.asObservable();

  /**
   * @ignore
   */
  constructor() {
  }

  /**
   * Trigger an global event
   * @param type Type/key of the event
   * @param data Data to be send along with the event
   */
  trigger(type: string, data?: any) {
    this.eventSource.next({type, data});
  }

  /**
   * Listen on a triggered event
   * @param types Type/key of the event
   */
  on(...types: string[]): Observable<Event> {
    return this.event$
      .pipe(filter(event => event && !!types.find(t => t === event.type)));
  }
}

results matching ""

    No results matching ""