2017-06-22 113 views
0

我使用的是我的根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服務切換加載器時出現此錯誤。

我知道還有其他相關主題,但他們並沒有真正幫助我。

任何幫助,將不勝感激。 謝謝。

+0

沒有看到你的服務很難,但看看這個並閱讀它,我已經回答了它已經https://stackoverflow.com/questions/41364386/whats-the-difference-between-markforcheck-and-detectchanges/41364469#41364469 – Milad

+0

通讀結束 – Milad

+0

可能重複與https://stackoverflow.com/questions/43375532/expressionchangedafterithasbeencheckederror-explained –

回答

-1

嘗試[隱藏],因爲它只隱藏元素不會將其刪除。它不會創建一個事件,但只會提供給用戶界面

+0

它工作的很好,但遺憾的是我仍然得到相同的錯誤。 http://i.imgur.com/wsiE5Pt.jpg – Benekiki

+0

嘗試調試錯誤來自何處。可能是錯誤在別的地方 –