我正在尝试使用 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 {}
否则,将为每个组件(针对每个提供程序(创建一个新的服务实例