1. 程式人生 > >Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.

Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.

我之前文章:https://blog.csdn.net/qq_36279445/article/details/78706784

當時沒解決好。 全部禁用不太好,畢竟開發模式下完美點比較好

我遇到的問題是一個輸入框,回車事件觸發驗證,檢查輸入內容與某個值是否相等,不相等的好久修改input樣式

程式碼如下


ng應該是render了input之後,判斷了裡面的值並且已經完成了。但是呢, 我一按回車,校驗之後修改了他剛render的地方。所以就給拋異常了。

這位老哥是表單中的,解決方法是:點選開啟連結

老外的解釋和可能的解決方法:點選開啟連結,文章2:點選開啟連結

ng的issue中說了,這是feature,不是bug。 GitHub上有這個 

點選開啟連結

我自己的解決方法

constructor( @Inject(DOCUMENT) private document: Document, private cdr: ChangeDetectorRef,...

在我回車進事件的時候,修改那個ngClass裡面的值,就讓ng停止檢查

this.cdr.detach(); // 停止檢測

this.cdr.reattach();

把[ngModel] 去除了,後臺直接賦值的。