一.什么是ChangeDetection
-
用于检测程序内部状态,然后反映到UI上
-
引起状态变化的内容【通常都是异步的】:Events事件触发、XHR发送的Http等请求通过接收内容改变某些状态、Timers定时任务
-
事件执行通常是通过ApplicationRef监听NgZone的onTurnDone,然后执行检测
-
程序状态通常会构建CD树(ChangeDetection树),Angular默认策略是将所有的CD树都跑一边,有的属性只会通过外部因素改变而改变的通常会执行onPush策略(只跑基本的节点)
二.Default策略调整为OnPush策略实例代码
-
在Component组件中,如果没有定义@Component中的changeDetection,则默认为ChangeDetectionStrategy.Default策略
@Component({ selector:'app-test', ..., changeDetection: ChangeDetectionStrategy.Default })
-
可以人为将CD策略变成onPush策略,表示告诉angular不用来检查我,除非我外部发生变化