Angular2 将事件从服务广播到使用该服务的所有组件



我正在尝试使用 angular2 中的"主题"类将事件作为可观察量广播,从服务广播到具有该服务实例的所有组件。

在我的服务中,我有以下几点:

private loggedIn = new Subject<boolean>();
isUserLoggedIn(): Observable<boolean> 
{
return this.loggedIn.asObservable();
}
test() 
{
this.loggedIn.next(true);
}

然后在使用此服务的组件中,我有(_auth是上面定义的相同服务(:

ngOnInit()
{
console.log("yay!");
this._auth.isUserLoggedIn()
.subscribe(
d => {
console.log(d);
},
d => {
console.log(d);
},
() => {
console.log("Done!");
}
);
}

现在的问题是,如果我从同一个组件中调用服务的方法this._auth.test();,一切正常,控制台.log行在此组件中执行。但是,如果从另一个组件调用服务的方法,则不会触发此组件来运行控制台.log行。

如何确保即使服务的方法由另一个组件触发,此组件中的代码也能运行?(假设两个组件同时呈现(。

谢谢!

不在每个组件上提供服务,只在

@NgModule({ 
providers: MySharedService, 
...
})
export class AppModule {}

否则,将为每个组件(针对每个提供程序(创建一个新的服务实例

最新更新