跟踪组件内部数组中的更改的最佳方法是哪种?

时间:2019-05-17 19:03:48

标签: javascript arrays angular typescript angular-changedetection

在Angular 7中创建自定义组件时,这是跟踪数组中更改的最佳方法吗?

示例:

export class Test {
   @Input() myArray = []

 // tell if array was modified (push, pop, reassigned...)
}

此外,还有更好的方法(例如可观察物等)吗?为什么?

1 个答案:

答案 0 :(得分:1)

我将使用ngOnChanges()进行此操作,这是Angular生命周期挂钩之一。在哪里可以找到类似的信息:

  1. 如果是第一次更改。
  2. 什么是当前值?
  3. 以前的值是多少。

它的类型是:SimpleChange

ngOnChanges(changes: SimpleChanges){
 // Detect Changes
  let myArrayChange = changes['myArray'];
  let currentValue = myArrayChange.currentValue;
  let previousValue = myArrayChange.previousValue;
}

此外,角度变化检测仅检查对象身份,而不检查对象内容,因此不会检测到推入和弹出。因此,您可以在子组件中为该输入分配输入,而使用slice()的{​​{1}}方法推入不同的对象

子组件HTML:

Array

子组件TS:

<test myArray="arr"></test>