簡體   English   中英

Angular2 Observable 不觸發重新渲染

[英]Angular2 Observable not triggering rerendering

TLDR:Observable 對象不會觸發組件重新渲染,直到用戶執行操作(例如單擊按鈕)。

我正在更新一個由 BehaviorSubject 支持的 observable,該 BehaviorSubject 包含在注入到我的組件內的服務中。

在我的組件中,我使用一個簡單的*ngIf="myObservable$ | async"來顯示一個 div。

我設法復制了兩種情況,一種有效,另一種無效,但我不明白有什么區別:

//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
});

如果您需要做副作用,請嘗試在do運算符中執行

this.http.get(url)
.map( res => res.json() )
.do( () => this._mySubject$.next(true))
.subscribe();

在 ngOnInit 方法中訂閱行為主題並設置要在 ngIf 中使用的屬性可能是一個更好的主意。 由於實際對象不是新對象,只是行為主體的新發射,因此可能不會觸發 Angular 的變化檢測。 它似乎最適合不可變對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM