当我们使用默认策略时,这些家伙可以触发变更检测(当然除了输入参数):
- 用户事件
- 计时器
- ajax 响应
但是。当您切换到 OnPush 策略 时,它仅由事件 触发并且不适用于计时器和 http。
所以问题是为什么它不适用于时间和 https 或者为什么它适用于事件。
最佳答案
OnPush
就是这样定义的。
它触发变化检测
- 当接收到组件监听的 DOM 事件时
- 当
|async
管道接收到新事件时 - 当
@Input()
被变更检测更新时。 - 当使用
ChangeDetectorRef::markForCheck
明确注册要检查的下一个变化检测轮次的组件时
ChangeDetectionStrategy.Default
为 Angulars 区域内调用的每个异步回调触发更改检测(每个 DOM 甚至在 Angular 应用程序中监听,每个 Observable 事件或完成的 Promise,setTimeout,...)
关于angular - 即使 OnPush 策略开启,什么事件也会触发变更检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45507503/