gpt4 book ai didi

javascript - @Input 对象的 Angular 变化检测

转载 作者:行者123 更新时间:2023-11-28 04:49:01 24 4
gpt4 key购买 nike

我有点了解更改检测在 Angular 2 中的工作原理,但我真的很难将有关更改检测的 AngularJS 方法转移/更改到 NG2。

假设我有一个组件,它采用单个 @Input() anObject 并具有单个函数 logAllProperties()出于参数考虑,它将所有属性记录到控制台。我想做的就是logAllProperties()每次anObject更改时调用无论如何。

我知道将对象视为不可变(无论是使用像 Immutable.js 这样的外部库,还是通过强制整个对象发生更改,即使是较小的属性更改)都会触发 ngOnChange,但无论如何,每当发生更改时都可以调用函数除了这些之外,或者使用 DoCheck 进行,我认为这可能效率极低。

除了“有办法”之外,做这样的事情的正确方法是什么?我是 Angular2 的新手,所以如果 Immutable 和 Observables 是正确的选择,我非常乐意学习正确的方法。

提前致谢

最佳答案

每次对象更改时执行操作的直接方法是使用 setter 或 ngOnChange(请参阅 Fals 的答案)。

使用不可变对象(immutable对象)以及 OnPush 更改检测策略是提高更改检测性能的一种方法。这并不是 Angular 中变化检测最明显的用途。

要获得完整的解释,我建议您阅读此文really good article如果您有时间(45 分钟),您可以观看文章作者 here 的视频

从那里,您应该对正在发生的事情有很好的了解。

关于javascript - @Input 对象的 Angular 变化检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43103484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com