我的 Angular 应用程序遇到了问题,我使用输入作为数组,并在发生click事件时将值推入数组。但是在完成数组推送后,ngOnChanges不会触发。有没有办法触发ngOnChange
我的代码是ts文件是
@Component({
selector: 'adv-search',
templateUrl: './app/modules/result.html'
})
export class InputComponent {
@Input() metas:any=[];
ngOnChanges() {
console.log(this.metas);
}
}
我的选择器标签
<adv-search [metas] = "metaIds"></adv-search>
点击事件代码
insertIds(id:any) {
metaIds.push(id);
}
最佳答案
Angular 变化检测仅检查对象身份,而不检查对象内容。
因此,未检测到插入或移除。
您可以做的是在每次更新后复制阵列
insertIds(id:any) {
this.metaIds.push(id);
this.metaIds = this.metaIds.slice();
}
或使用
IterableDiffer
像InputComponent
一样检查ngDoCheck
中NgFor
内部的更改。