gpt4 book ai didi

angular - 值更改时不调用 ngOnChange

转载 作者:太空狗 更新时间:2023-10-29 18:06:49 25 4
gpt4 key购买 nike

我已经设置了 plunk

我在单击按钮时更改对象的 bool 属性,并且在单击 ngOnchange 时应该触发,但没有发生。为什么?。是否与父子组件之间共享相同的对象引用有关?

最佳答案

Angular 变化检测仅检查对象身份。
如果您修改对象的内容,Angular 将无法识别。
如果你有一个对象的属性或数组项的绑定(bind),Angular 将检查绑定(bind)思想,但 ngOnChanges 仍然不会被调用。

这种设计的原因是性能。如果 Angular 需要进行深度对象比较,变更检测将成为更大的性能负担。

解决方法是复制对象或数组,以创建具有不同对象 ID 的新对象。 Angular 变化检测会将其识别为变化并更新到子组件的绑定(bind)。

  this.data.status = !this.data.status
this.data = Object.assign({}, this.data);

或数组

  this.data = this.data.slice();

Plunker example

其他方法是在子组件中实现 DoCheck 并自己进行比较,而不是依赖于变化检测。

关于angular - 值更改时不调用 ngOnChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46702410/

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