我试图制作一个简单的网格组件,并且在发出事件后更新视图时遇到了麻烦!
请解释谁知道,为什么在更新简单组件后,视图不重新渲染?此代码有什么问题?

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/

10-10 18:40
查看更多