如何在angular2中将app.component中的事件广播到router-outlet

前端之家收集整理的这篇文章主要介绍了如何在angular2中将app.component中的事件广播到router-outlet前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个具有将发出事件的流$的服务,我希望在app.component激发流$emit后,< router-outlet>< / router-outlet>中的子组件将能够订阅它,但现在我遇到的问题是,即使它在构造函数订阅它,订阅回调永远不会被触发.

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

什么是最佳做法?

解决方法

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

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');})
}

猜你在找的Angularjs相关文章