如何在angular2中将事件从app.component广播到路由器出口
我创建了一个服务,它有一个流$将发出一个事件,我希望在app.component触发流$emit之后,如何在angular2中将事件从app.component广播到路由器出口,angular,rxjs,angular2-routing,Angular,Rxjs,Angular2 Routing,我创建了一个服务,它有一个流$将发出一个事件,我希望在app.component触发流$emit之后,中的子组件将能够订阅它,但现在的问题是,即使它在构造函数中订阅,订阅回调也不会被触发 我想知道这是否与通过流服务发送事件时不同 最佳实践是什么?最简单的方法是创建事件总线服务: export class EventBusService { bus:Subject<Event> = new Subject<Event>(); dispatch(data:E
中的子组件将能够订阅它,但现在的问题是,即使它在构造函数中订阅,订阅回调也不会被触发
我想知道这是否与通过流服务发送事件时不同
最佳实践是什么?最简单的方法是创建事件总线服务:
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);
}
}
组件构造函数:
constructor(bus:EventBusService){
bus.dispatch(new Event());
bus.listen('load').subscribe((e)=>{console.log('loaded');})
}
下面是我对这种服务的实现,它允许在订阅时获取最后第n个值。
constructor(bus:EventBusService){
bus.dispatch(new Event());
bus.listen('load').subscribe((e)=>{console.log('loaded');})
}