/** * @author : Rajkeshwawr Prasad (rajkeshwar.pd@gmail.com) * @date : 2017-03-02 19:15:35 * @copyright: (c) 2016 Kanerika Software Pvt Ltd. * @website : http://kanerika.com/ */ import { Subject } from 'rxjs/Subject'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/map'; //http://blog.lacolaco.net/post/event-broadcasting-in-angular-2/ interface BroadcastEvent { key: any; data?: any; } export class Broadcaster { private _eventBus: Subject; constructor() { this._eventBus = new Subject(); } broadcast(key: any, data?: any) { this._eventBus.next({key, data}); } on(key: any): Observable { return this._eventBus.asObservable() .filter(event => event.key === key) .map(event => event.data); } }