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];
我正在从父组件获取 @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];