官网的解释
用于当前组件的变更检测策略。
changeDetection: ChangeDetectionStrategy
当组件实例化后,angular就会创建一个变更检测器,它负责传播组件各个绑定值的变化。该策略是下列值之一:
- OnPush:把策略设置为CheckOnce(按需)。
- Default:把策略设置为CheckAlways。
什么是变更检测?
简单来说变更检测就是angular用来检测视图与模型之间绑定的值是否发生了变化,当检测到模型中绑定的值发生变化时,则同步到视图上;反之,当检测到视图上绑定的值发生改变时,则回调对应的绑定函数。
什么情况下会触发变更检测?
下面有几种场景:
- 在视图通过插值表达式绑定属性,点击按钮改变属性的值,这时就导致绑定的值发生了变化。
- 在组件的生命周期钩子函数里向服务器端发送ajax请求,当请求返回结果时,同样会改变当前视图上绑定的属性的值。
- 设定定时任务,这些定时任务也可能会改变与视图绑定的值。
不难发现,上述三种情况有一个共同点,即这些导致绑定值发生改变的事件都是异步发生的。angular使用zonejs通过猴子补丁的方式,对webapi中的一些异步任务的api在运行时进行替换,替换后的api提供了一些钩子函数。