[英]Angular Change Detection in HttpClient
我有一個HttpClient
服務,它正在后端更新數據。 在后端處理期間,我通過執行this.isLoading = true
顯示加載狀態,並且在成功處理之后,我正在使用this.isLoading = false;
刪除subscribe()
中的加載狀態this.isLoading = false;
.
現在我將代碼更改為使用ChangeDetectionStrategy.OnPush
並且加載狀態不再消失。 我知道ChangeDetectionStrategy.OnPush
的更改檢測發生在更改input
屬性或在組件上的事件期間更改對象引用時。
就我而言,我是否必須手動調用ChangeDetectorRef.detectChanges()
來觸發更改檢測,還是我遺漏了什么?
編輯
為了清楚this.isLoading
,我正在使用this.isLoading
通過this.isLoading
地在 HTML 元素上添加/刪除類來顯示/隱藏加載狀態。 例如,
<div [class.processing]="isLoading"></div>
將 ChangeDetectionStrategy 設置為 OnPush 時,更改檢測將僅在輸入更改時運行。 由於您訂閱了 observable 並更改了局部變量,因此 angular 不會收到此更改的通知,因此您必須讓自己知道。 推薦的方法是使用 ChangeDetectorRef.markForCheck() 它將在組件上方的樹枝上執行更改檢測
這篇偉大的思想文章中有更多關於此的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.