我试图制作一个简单的网格组件,并且在发出事件后更新视图时遇到了麻烦!
请解释谁知道,为什么在更新简单组件后,视图不重新渲染?此代码有什么问题?
export class GridComponent implements OnInit {
@Input() resource: any [];
@Output() saveModel = new EventEmitter();
@Output() deleteModel = new EventEmitter();
attributes: any[];
isUpdating: boolean = false;
updatingID: number;
constructor() {}
ngOnInit() {
this.attributes = Object.keys(this.resource[0]);
}
toggleUpdate(id, flag = true) {
this.isUpdating = !this.isUpdating;
this.updatingID = flag ? id : undefined;
}
destroy(id) {
this.deleteModel.emit(id);
}
save(model) {
this.saveModel.emit(model);
this.toggleUpdate(model.id, false);
}
cancel(id) {
this.toggleUpdate(id, false);
}
}
完整示例在这里https://plnkr.co/edit/InxsHu9GwCtMplYoocsS?p=preview
最佳答案
resource
数据已在父级和子级组件中正确更新,只是表单未显示更新。
我认为您需要更改values
管道以仅返回键,而不返回值,然后使用带有键的*ngFor
变量访问值以直接在视图中获取值。
关于javascript - angular2 @Input EventEmitter更新 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39699704/