首页 > 解决方案 > 使用 ngDoCheck 的成本是多少?

问题描述

我将模型引用从父组件注入到子组件。当该模型引用的属性发生更改时,我需要更新子组件的视图。

这不能使用 ngOnChanges 完成,因为对模型的引用没有改变。这是设计使然,在 Angular 文档中有所提及。

建议的替代方法是使用 ngDoCheck。这将允许我查看模型引用的任何属性是否已更改并相应地调用函数。但是,Angular 文档提到,由于调用此生命周期挂钩的频率,这将是昂贵的。

现在,子组件订阅了来自更新我所有 模型引用的服务的 observable。当服务更新模型时,它会通知订阅者是时候更新他们的视图了。

这里的问题是我是否至少有两个具有不同模型引用的子组件。使用当前设计,每次更新任何模型时,所有子组件都会更新其视图。

这似乎很浪费,但我不确定使用 ngDoCheck 是否会更好。

我应该使用 ngDoCheck 单独更新子组件,还是应该坚持使用 observable 来强制所有子组件在更新任何模型时更新?

如果是前者,那么 ngDoCheck 有哪些好的文档?互联网似乎令人惊讶地缺乏关于这个生命周期钩子的信息。

标签: angularmodellifecycle

解决方案


推荐阅读