Angular 4 kendo Dialog如何从Dialog中读取更新的值

时间:2018-04-14 12:18:11

标签: angular kendo-ui

我正在将“TotalUnits”值发送到Dialog并在那里更新值。我想在'dialog.result'中读回'TotalUnits'值。有些我怎么没看到更新的价值。有什么帮助吗?

主要组成部分:

AllocationDialog(data: any) {
    const dialog: DialogRef = this.component.dialogService.open({
      title: ' Allocations',
      content: AllocationComponent,
      actions: [
        { text: 'Save', primary: true, data },
      ],
      width: 500,
      height: 500
    });
    dialog.result.subscribe((dialogResult) => {
      if (dialogResult instanceof DialogCloseResult) {
        console.log('close');
      } else {
        console.log('action', dialogResult);
      }
    });

    const allocationsInfo = dialog.content.instance;
    allocationsInfo.TotalUnits = data.TotalUnits;
}

AllocationComponent - 对话框:

@Input() public TotalUnits: number;

<input kendoTextBox [(ngModel)]="TotalUnits" />

2 个答案:

答案 0 :(得分:2)

除了语句顺序之外,代码中的所有内容都是正确的。您应该在订阅中访问更新的数据:

dialog.result.subscribe((dialogResult) => {
    if (dialogResult instanceof DialogCloseResult) {
        console.log('close');
    } else {
        console.log('action', dialogResult);
    }
    //============= correct place ===============//
    const allocationsInfo = dialog.content.instance;
    allocationsInfo.TotalUnits = data.TotalUnits;
});

答案 1 :(得分:1)

根据他们对DialogService的示例,您可以使用dialog.content.instance上对话框的相同实例取回这些值。

dialogRef.result.subscribe((dialogResult) => {
    console.log(dialogRef.content.instance);  // <-- here are your updated values
  if (dialogResult instanceof DialogCloseResult) {
    console.log('close');
  } else {
    console.log('action', dialogResult);
  }
}

我从Kendo文档中的原始plunker中做了一个副本来说明它,显示了该年龄的输入框,因此您可以在控制台的输出中看到更新的对象。

https://plnkr.co/edit/nVdvbaPPgDrtbIuV57ZG?p=preview