Har*_*wat 5 lifecycle-hook angular
在 Angular 2+ 中,ngDoCheck和ngAfterViewChecked似乎执行相同的功能。
ngDoCheck据说只要触发更改检测就会调用。现在,此更改检测将随着视图中的更改而触发。根据文档,ngAfterViewChecked每当视图更改时都会调用。
当一个生命周期钩子就足够了时,这里还需要两个生命周期钩子吗?
该DoCheck钩子允许您集成到更改检测周期中,并查找对象引用中的更改或 Angular 未自动检测更改的任何区域。界面如下:
interface DoCheck {
ngDoCheck(): void;
}
Run Code Online (Sandbox Code Playgroud)
根据组件树的大小和复杂性,该ngDoCheck方法将执行大量次,如果代码实现不当,可能会成为性能瓶颈。除非必要,否则避免使用ngDoCheck方法。
当使用对象类型的属性时,Angular 将通过值引用来观察更改,这意味着它会检测整个值的更改,但不会检测子属性的更改。在这种情况下,我们将使用DoCheck生命周期挂钩并检测对象的更改。
该ngAfterViewChecked方法代表AfterViewChecked生命周期钩子和接口。它允许您提供由于某种原因 Angular 无法处理的自定义更改跟踪。该行为类似于 AfterContentChecked 挂钩,但适用于视图模板子项而不是投影内容。
interface AfterViewChecked {
ngAfterViewChecked(): void;
}
Run Code Online (Sandbox Code Playgroud)
DoCheck 主要用于您的业务逻辑更改,在上述场景中,角度不会检测到这些更改。用于AfterViewChecked查看跟踪。
希望有帮助!
| 归档时间: |
|
| 查看次数: |
8900 次 |
| 最近记录: |