angularjs - 深入检查类似于 Angular2 中 $watchCollection 的变化

标签 angularjs angular angular2-observables ngonchanges angular2-docheck

我正在使用从父组件传递到子组件的对象数组。 当一个新项目被推送到数组或数组中现有对象之一的属性发生变化时,它不会触发使用此变量的组件(父/子/同级组件)的 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/

相关文章:

angular - Subject.subscribe 不在 ngOnInit 中触发

javascript - ng-repeat 的意外行为

javascript - AngularJS 和选择

javascript - 上传后双倍大小的文件

unit-testing - Angular 2 单元测试可观察到的错误 (HTTP)

angular - 无法访问组件中的服务变量 - Angular2

javascript - 将范围值保存到另一个范围并同时显示

angular - Httpclient Angular 教程

angular - 如何在 Angular 2 RC4 中获取查询参数

angular - 如何在 Angular 2 的事件处理程序中传递 html 元素属性?