【发布时间】:2018-09-29 17:22:25
【问题描述】:
我正在尝试通过 EventEmitter 将组件的更改通过其父级传播到其兄弟姐妹之一。改变的是数组中用户的状态。
这是我的代码:
child1.component.ts(来源)
@Output() adminAdded = new EventEmitter<Array<AdminDetails>>();
...
setAdminStatus(index: number, status: string): void {
this.admins[index].status = status;
this.adminAdded.emit(this.admins);
}
parent.component.ts
onAdminAdded(adminDetails: Array<AdminDetails>): void {
Object.assign(this.adminDetails, adminDetails]);
}
parent.component.html
<child1-component (adminAdded)="onAdminAdded($event)"></child1-component>
<child2-component [admins]="adminDetails"></child2-component>
child2.component.ts
adminMails: string[];
@Input() set admins(admins: Array<AdminDetails>) {
if (!admins) {
return;
}
adminMails = admins.filter(x => x.status === 'Active').map(x => x.email);
}
我在这里显示活跃管理员的电子邮件。问题是更改只到达父组件。 Object.assign 处的断点被命中,但在 setter 中却没有。
我认为这是因为对数组的引用是相同的,并且它无法识别更改。有什么想法吗?
【问题讨论】:
标签: arrays angular data-binding