【问题标题】:How to broadcast events from app.component to router-outlet in angular2如何在angular2中将事件从app.component广播到路由器插座
【发布时间】:2016-08-15 09:16:12
【问题描述】:

我创建了一个服务,它有一个会发出事件的 stream$,我希望在 app.component 触发 stream$ 发出后,<router-outlet></router-outlet> 中的子组件将能够订阅它,但现在我遇到的问题是,即使它在构造函数中订阅它,订阅回调也永远不会被触发。

我想知道这与通过流服务发出事件时是否不同?

最佳做法是什么?

【问题讨论】:

标签: angular rxjs angular2-routing


【解决方案1】:

最简单的方法是创建事件总线服务:

export class EventBusService
{
    bus:Subject<Event> = new Subject<Event>();

    dispatch(data:Event){
        this.bus.next(data);
    }

    //its up to you how to implement it:
    listen(type:string):Observable<Event> {
        return this.bus.filter(event=>event.type === type);
    }
}

使用依赖注入:

bootstrap(App, [EventBusService]);

组件构造函数:

constructor(bus:EventBusService){
   bus.dispatch(new Event());
   bus.listen('load').subscribe((e)=>{console.log('loaded');})
}

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2016-04-23
    • 2020-01-13
    • 2017-03-21
    相关资源
    最近更新 更多