2017-02-18 54 views
1

如果表達式的值發生更改,很少發生此錯誤,並且應用程序無法再響應。Angular - 檢查後表達式已更改。以前的值

我在我看來這樣的功能:{{generalService.timeFromNow(item.creation_time)}}

的呼叫:moment(timestamp, "X").fromNow()

隨機,當時間從35到36變化,這個錯誤發生。 image

如果我有其他時間移動(滴答)分鐘,不會引發錯誤。

這種錯誤發生在我的應用程序周圍,我不想微觀管理ngOnChanges,因爲我認爲Angular應該管理它。

+0

當您在angular2中使用enableprodmode時,此錯誤消失。否則,搜索在變化檢測週期中更改值的項目。 – laser

+0

@laser但是有這個錯誤的理由是什麼?爲什麼在變化檢​​測過程中需要更改 – Amit

+1

我有一個例子來自我的經驗:對於一個元素,我有一個指令[focusme] =「true」(事實證明是另一個元素)。當組件被分析並運行時,它爲兩個不同的輸入提供了兩個指令,並且首先將焦點更改爲一個,然後更改爲另一個輸入,並報告了完全錯誤,並說渲染期間值發生了變化(通常不應該)。在發生這個錯誤後,我發現我的錯誤=) – laser

回答

1

這是Angular2在開發模式中的一項功能,可幫助檢測不良設計。有這個錯誤表明你可能不得不重新設計。

例如,假設您有兩個具有此綁定的字段。像文字和圖表。

{{generalService.timeFromNow(item.creation_time)}}

他們可以最終顯示飄飛正式版不同的值,如果你不解決這個問題。這在您的正常測試中很難發現,只有一小部分用戶會注意到它。

解決方案通常是將'timeFromNow'的結果存儲在某個狀態變量中,以便它不能更改更新週期。

相關問題