我已经创建了一个具有将发出事件的流$的服务,我希望在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');}) }