簡體   English   中英

HttpClient 中的角度變化檢測

[英]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() 它將在組件上方的樹枝上執行更改檢測

在此處輸入圖片說明

這篇偉大的思想文章中有更多關於此的信息

帕斯卡·普雷希特 (Pascal Precht)的精彩演講

暫無
暫無

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

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