我正在使用从父组件传递到子组件的对象数组。
当一个新项目被推送到数组或数组中现有对象之一的属性发生变化时,它不会触发使用此变量的组件(父/子/同级组件)的 ngOnChanges
).
在 AngularJS 中,我们有 $watchCollection
,我们可以使用它来监视复杂的对象。我们有类似的 Angular2+ 吗?
如何在Angular2+中做类似$watchCollection
的深度检测?
我熟悉 AngularJS 但不熟悉 Angular2 +。
更新:
按照@Shirish Patel 的建议here ,我发现虽然变量的变化随处可见,但是 ngOnChanges
函数没有被触发。为什么会这样?我需要触发此函数,以便我可以处理值更改时的其他操作。
最佳答案
不要将对象推送到您的数组,因为变异的东西不会触发 ngOnChanges 生命周期钩子(Hook)。有点像 rxjs distinctUntilChanged,需要一个新数组而不是修改后的数组。
您需要为输入提供新版本的数组尝试:
this.array = [...this.array, itemWhichNeedsAdding]
上面的代码返回一个数组的新实例,并将触发变化检测。
关于angularjs - 深入检查类似于 Angular2 中 $watchCollection 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46953649/