我有一个角度材料5组件与一组对象 . 它显示一个模态对话框,打开另一个带有表单的组件来修改数组的一个对象 .
当我的对话框关闭时,它会发回修改后的对象 . 因此父级获取此结果并更新数组 . 但显示器没有更新,这是我的问题 .
要么我的逻辑错了,要么我需要手动重新触发绑定?你会建议什么?
这里的函数打开对话框并在数组关闭后更新它 .
openDialog(event: any, id: number) {
const index = this.contractors.findIndex(x => x.Id === id);
const dialogRef = this.dialog.open(ContractorEditComponent, {
width: '600px',
data: { contractor : this.contractors[index] }
});
dialogRef.afterClosed().subscribe( (contractor: ContractorModel) => {
if (contractor !== null) {
this.contractors[index] = contractor; // update my collection with new value
// Should I re-trigger data binding manually here to update the UI?
}
});
}
1 回答
Angular的更改检测仅在引用新对象时触发,而在修改对象时不触发 . 使用
this.contractors[index] = contractor
,您只能修改数组,但引用本身保持不变 .有几种不同的方法可以解决此问题,例如使用
Observables
创建数组的新副本,或通过注入和使用ChangeDetectorRef手动触发更改检测: