昨天遇到一个问题 ,用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,现在已经知道如何切换工作模式了,现阶段还是使用开发模式吧。
厚积薄发,笨鸟先飞。