我知道AngularJs中的数据绑定概念是一种天真的脏检查机制。在Google I / O视频中,他们说过,他们优化了Angular2中的数据绑定/更改检测。它如何在Angular2中起作用
答案 0 :(得分:1)
应用程序状态更改可能由以下原因引起:
它们都是异步的。
那么Angular 2如何知道何时运行变换探测器?因为 Zones 。你可以在那里阅读更多相关信息:
http://blog.thoughtram.io/angular/2016/02/01/zones-in-angular-2.html http://blog.thoughtram.io/angular/2016/01/22/understanding-zones.html
Zones
有生命周期事件。 ApplicationRef
是监听区onTurnDone
事件。每当触发此事件时,它都会执行tick()
函数,启动更改检测。
Angular 2中的所有组件都有自己的更改检测器(因此它看起来像组件树 - 从上到下)。 Change Detector正在比较变量引用,如果引用没有改变,CD检查属性(如果变量是对象)。
关于这一点的文章非常棒:
http://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html