我的 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();
}

或使用IterableDifferInputComponent一样检查ngDoCheckNgFor内部的更改。

10-06 01:32