【发布时间】:2021-12-24 02:14:09
【问题描述】:
我有一个数组(数据源)列表,我正在对它执行添加和删除操作。我在子组件中传递了一个数组(数据源)并在子组件中添加了 *ngFor 循环。我作为 getter setter 传递的数组,用于检测 @Input 更改。
这是我的AppComponent:
<div>
<vertital-tabs
[config]="config"
[dataSource]="dataSource" <-- Array changes I want to detect in Child
[(selectedItem)]="selectedItem">
</vertital-tabs>
<div style="background-color: yellow;margin: 10px">
{{ selectedItem | json }}
</div>
</div>
在 ChildComponent(垂直选项卡)中:
get dataSource(): any {
return this._dataSource;
}
@Input() set dataSource(value: any) {
this._dataSource = value;
// Not called this on Add New button even if Input Datasource is changed.
// I want this to be called on Add New Item button click....
debugger;
}
问题是当我在数组上添加新项目时,它没有调用setter @Input 更改方法。当我删除一个项目时,它工作正常并调用@Input change。
注意:在实际场景中我有很多属性作为输入,所以我不想使用 ngOnChanges()
这是我创建的一个示例:https://stackblitz.com/edit/angular-vertical-tabs-component-split-yzynef
【问题讨论】:
标签: javascript angular typescript angular-material angular-reactive-forms