angular - 即使 OnPush 策略开启,什么事件也会触发变更检测?

标签 angular

当我们使用默认策略时,这些家伙可以触发变更检测(当然除了输入参数):

  • 用户事件
  • 计时器
  • 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/

相关文章:

http - 拒绝设置不安全 header "access-control-request-headers"angular 2

string - Angular2 或 TypeScript 左填充零字符串

for循环中的Angular 2 Routerlink

Angular 2如何在功能模块中隔离服务提供者

用于页眉和页脚的 Angular 2 功能模块

angular - 在 Y 轴上显示时间 - 气泡图

javascript - 使用 Renderer 和 ElementRef 修改组件

javascript - 无法读取未定义的属性 'request'

angular - 如果类具有 @Pipe 注释,则 Angular2 和 TypeScript 的官方 Jasmine 测试 101 示例不起作用

node.js - 浏览器 Angular 5 控制台中来自服务器的消息