在Angular 6中,ngOnChanges不会自动检测嵌套数组的变化。但你可以使用另外的方法来触发嵌套数组的变化。
以下是一个解决方法的示例代码:
在父组件中,你可以创建一个新的属性来存储嵌套数组的变化,并在ngOnChanges方法中检测这个属性的变化。然后,你可以在子组件中使用@Input装饰器来监听这个新属性的变化。
父组件示例代码:
import { Component, OnChanges, SimpleChanges } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
`
})
export class ParentComponent implements OnChanges {
nestedArray: any[] = [];
ngOnChanges(changes: SimpleChanges) {
if (changes['nestedArray']) {
this.nestedArrayChange(changes['nestedArray'].currentValue);
}
}
nestedArrayChange(value: any[]) {
// 处理嵌套数组的变化
console.log('嵌套数组发生了变化:', value);
}
}
子组件示例代码:
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
@Component({
selector: 'app-child',
template: `
`
})
export class ChildComponent implements OnChanges {
@Input() nestedArray: any[];
ngOnChanges(changes: SimpleChanges) {
if (changes['nestedArray']) {
this.nestedArrayChange(changes['nestedArray'].currentValue);
}
}
nestedArrayChange(value: any[]) {
// 处理嵌套数组的变化
console.log('嵌套数组发生了变化:', value);
}
}
使用这种方法,当父组件的嵌套数组发生变化时,会调用嵌套数组的变化处理方法,然后再将新的嵌套数组的值传递给子组件进行处理。