问题标签 [angular2-docheck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
249 浏览

angular - ngOnchanges 和 DoCheck 角度

在研究 Angular 中 ngOnChanges 和 DoCheck 之间的区别时,我看到了一些我无法解释的东西,需要你的帮助。

基本上,我知道 ngOnChanges 无法识别数组或对象的变化,而 DoCheck 可以。我在这里创建了 stackblitz:https ://stackblitz.com/edit/angular-ivy-sbyzya?file=src/app/app.component.html

在 app.component.html 中

  • 如果您注释第 2 行,那么只有 ngOnChanges 运行的组件,单击添加或编辑时数据没有排序。没错,因为 OnChange 无法检测到数组@Input 的变化。
  • 如果您注释第 1 行,那么只有 DoCheck 运行的组件,单击添加或编辑时数据排序。没错,因为DoCheck可以检测到数组@Input的变化。
  • 但是如果你让两个子组件都运行,当点击添加或编辑时,两个子组件中的数据都会被排序。这对我来说似乎很奇怪,因为我不明白为什么 DataTableOnchangeComponent 可以运行排序功能。我在 ngOnChanges 中进行了排序,单击添加或编辑时未触发 ngOnChanges,但不知何故数据仍然得到排序。