昨天遇到一個問題 ,用ng
Expression has changed after it was checked
查了一下說在angular2中,這個錯誤只會在dev開發模式下出現,在pro發布版本中不會出現,通過enableProdMode()可以控制
在組件中增加這段代碼可以去掉這個檢查,但是不建議這么做。
import {enableProdMode} from '@angular/core'; enableProdMode();
報錯原因是angular4 的一種機制吧。
在dev模式下,額外增加了一次變化檢測,在第一輪變化檢測周期結束后,會立即進行第二輪變化檢測,對比兩次檢測值,如果不相同,則認為是變化檢測引起的。
這個錯誤經常出現在組件通信時,在輸入綁定中(set input,ngOnChanges等等,函數或getter等)修改了其他成員變量導致的,這類函數必須沒有副作用。
這句必須添加到main.ts
此處使用該方法前一定要先 import
它,就像 platformBrowserDynamic()
方法一樣。
注意,上述代碼要放在 platformBrowserDynamic()
方法前使用,否則會報錯:
Error: (SystemJS) Cannot enable prod mode after platform setup. OK,現在已經知道如何切換工作模式了,現階段還是使用開發模式吧。