TLDR:直到用戶執行操作(例如,單擊按鈕)時,可觀察對象纔會觸發組件重新渲染。Angular2 Observable not triggering rerendering
我正在更新由組件內注入的服務中包含的BehaviorSubject支持的observable。
在我的組件中,我使用簡單的*ngIf="myObservable$ | async"
來顯示div。
我設法複製2分的情況下,一個工作,一個是不,但我不明白有什麼區別:
//CASE 1
this._mySubject$.next(true); //THIS DOES TRIGGER RERENDERING
//CASE 2
this.http.get(url)
.map(res => res.json())
.subscribe(body => {
this._mySubject$.next(true); //THIS DOESN'T TRIGGER RERENDERING UNTIL AN ACTION IS MADE
});
整個流如何觸發?你使用的是什麼版本的angular2? - 你可以通過在'ngZone.run(...)'中包裝'.next(true)'來解決你的問題 - 但是這對於簡單的休息調用來說不是必須的,所以我目前的猜測是你的rest-call以某種方式包裝在其他異步/外部觸發器中 – olsn
我正在使用Angular 2.1.0。 我已經訂閱了observable的組件調用了服務函數,它使得簡單的http調用(不包含任何東西)。 – Yanis26
使用'subcribe()'塊調用'.next()'的任何特定原因?訂閱模塊不應該用於產生副作用。只有觀察者的最終消費者才能認購。 – AngularChef