import { Injectable } from '@angular/core'; import * as Rx from 'rxjs/RX'; @Injectable() export class Message { listeners events eventsSubject constructor() { this.listeners = {}; this.eventsSubject = new Rx.Subject(); this.events = Rx.Observable.from(this.eventsSubject); this.events.subscribe( ({name, args}) => { if (this.listeners[name]) { for (let listener of this.listeners[name]) { listener(...args); } } }); } // 推送数据 send = (name, ...args) => { this.eventsSubject.next({ name, args }); } // 添加监听事件,listener为函数 receive = (name, listener) => { if (!this.listeners[name]) { this.listeners[name] = []; } this.listeners[name].push(listener); } }