ngOnChanges 仅在第一次触发

ngOnChanges fires only for the first time

我正在从父组件获取 @Input(),并使用 ngOnChanges 来捕捉变化。但它只会触发一次。它改变了当前值,但以前的值总是未定义的。这是我正在做的事情:

myArray=[];
ngOnChanges(changes:SimpleChanges):void{
  console.log(changes);
  if(changes.myInput.currentValue != undefined && changes.myInput.currentValue != changes.myInput.previousValue){
    for(var i=0;i<this.changes.myInput.currentValue.length;i++){
    console.log("length is" , i);
    this.myArray.push(this.changes.myInput.currentValue);
    }
  }
}

这里,console.log(changes)只出现一次。虽然每次 @Input() 变化时它里面的值都会变化。我的 myInput.currentValue 是一个数组,每次通过 @Input() 从父对象将新对象推送到数组时,我都想做一些事情。它不在 if 条件内,我找不到长度。

My myInput.currentValue is an array and I want to do something every time a new object is pushed on to the array via @Input() from parent.

这是问题的原因。输入的值(因此,引用)在技术上没有变化——对象发生了变化,但引用保持不变——变化检测机制错过了它。所以与其做这样的事情

myArray.push(newValue);

在父级中,改为

myArray = [...myArray, newValue];