0
我想在angular2中使用「Subject」類將事件廣播爲observable,從服務到所有組件中具有該服務的實例。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();
,則一切正常,console.log行將在此組件中執行。但是,如果服務的方法是從另一個組件調用的,則此組件不會觸發以運行console.log行。
如何確保即使服務的方法由另一個組件觸發,該組件中的代碼也能運行? (假設兩個組件都在同一時間渲染)。
謝謝!
我已經做到了。共享服務僅在AppModule中提供,無法在其他地方提供。 –
然後,我可以想象的唯一的事情是,組件僅在**事件發送後訂閱**。您可以嘗試使用「BehaviorSubject」而不是「Subject」進行驗證。 –
您可以詳細說明BehaviourSubject嗎? –