我使用的是我的根app.component.html與ngIf一個CSS裝載機:角4動態頁面加載:ExpressionChangedAfterItHasBeenCheckedError
<div *ngIf="displayPageLoader" class="page-loader-background">
<div class="page-loader">
<div class="loader2" style="font-size: 7px; top: -50px;">Loading...</div>
</div>
</div>
當我需要顯示裝載機,我打電話ToggleLoadersService它告訴根組件改變變量displayPageLoader。
它運作良好,但我不斷收到幾乎每一個頁面上此錯誤:
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.
at viewDebugError (vendor.bundle.js:8687)
at expressionChangedAfterItHasBeenCheckedError (vendor.bundle.js:8665)
at checkBindingNoChanges (vendor.bundle.js:8829)
at checkNoChangesNodeInline (vendor.bundle.js:12682)
at checkNoChangesNode (vendor.bundle.js:12656)
at debugCheckNoChangesNode (vendor.bundle.js:13431)
at debugCheckDirectivesFn (vendor.bundle.js:13333)
at Object.eval [as updateDirectives] (ng:///AppModule/AppComponent.ngfactory.js:50)
at Object.debugUpdateDirectives [as updateDirectives] (vendor.bundle.js:13315)
at checkNoChangesView (vendor.bundle.js:12476)
at callViewAction (vendor.bundle.js:12840)
下面是切換此錯誤的場景:
- 用戶是第1
- 用戶上點擊頁面2按鈕:頁面1組件 調用ToggleLoadersService服務來切換加載程序,然後 然後將用戶重定向到第2頁。
- 用戶到達第2頁。
- 頁面2調用ToggleLoadersService服務來關閉加載器。
頁面2嘗試調用ToggleLoadersService服務切換加載器時出現此錯誤。
我知道還有其他相關主題,但他們並沒有真正幫助我。
任何幫助,將不勝感激。 謝謝。
沒有看到你的服務很難,但看看這個並閱讀它,我已經回答了它已經https://stackoverflow.com/questions/41364386/whats-the-difference-between-markforcheck-and-detectchanges/41364469#41364469 – Milad
通讀結束 – Milad
可能重複與https://stackoverflow.com/questions/43375532/expressionchangedafterithasbeencheckederror-explained –