Angular学习笔记(十五)组件周期钩子之变更检测和DoCheck

变更检测Angular的变更检测机制配合zone.js来实现,保证组建变化和页面变化同步浏览器中任何异步事件都会触发检测机制检测模版所有绑定属性,若改变则相应区域会被更新需要注意的是:变更检测机制只会把组件属性的改变反应到模版上,不会改变组件值Angular如何进行变更检测每个组件都有属于自己的变更检测器,当任何一个变更检测器检查到变化,zone.js会根据组件的变更检测
摘要由CSDN通过智能技术生成

变更检测

  • Angular的变更检测机制配合zone.js来实现,保证组建变化和页面变化同步
  • 浏览器中任何异步事件都会触发检测机制
  • 检测模版所有绑定属性,若改变则相应区域会被更新
  • 需要注意的是:变更检测机制只会把组件属性的改变反应到模版上,不会改变组件值

Angular如何进行变更检测

每个组件都有属于自己的变更检测器,当任何一个变更检测器检查到变化,zone.js会根据组件的变更检测策略来检查组件,以判断组件是否需要更新它的模版。

检测策略

  • Default策略,默认情况下所有组件都使用Default策略
  • OnPush策略
    如果所有组件都使用Default策略,不管变更发生在哪个组件上,zone.js会检测整个组件树,但会跳过使用OnPush策略的组件,OnPush策略的组件只有当其输入属性(即@Input)发生改变时,zone.js才会检测这个组件及其子组件。

更改策略,在@component加上changeDetection:ChangeDetectionStrategy.OnPush

DoCheck

检测Angular自身无法捕获的变更并采取行动

  • 这个钩子的初次调用是因为数据渲染,而后来的仅仅只是点击input框,也会调用ngDoCheck钩子
  • 使用这个钩子时需注意,用在特定事件发生时才触发业务逻辑,否则会造成后台数据过大

demo:
docheck.component.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值