(1)目的:保证组件属性变化和浏览器的显示同步,浏览器里面发生任何异步变化都会触发“变更检测”,当变更检测运行时,会检测应用中所有的绑定关系。(在1中必须用ngclick,想用原生的,必须用apply,在2中有了zone.js,随便用。变更检测只是把属性和页面模板同步,不会改变属性值。每个组件会生成它自己的变更检测器,当检查到变化,zone会根据组件变更检查策略来检查策略,来更新模板)
(2)检测策略:
A:Default策略:检查所有组件
B.Onpush策略:阻止检查继续走下去
(3)DoCheck钩子的调用
演示:
1.子组件
效果:
解析:点,点,点点击事件会触发变更检测机制,DoCheck会调用,改了tom值,变化捕捉到,点,点,计数器清空。钩子会检测什么时候会发生变化,小心钩子频繁调用,发生变化,都会被调用,大部分调用无关,很显然用这个钩子要非常高效,要不然会引起性能问题,有check关键字的钩子,变更检测发生,所有写check关键字钩子都会被调用。所有写有check关键字的钩子用的时候要非常高效。
网友评论