我正在将“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" />
答案 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中做了一个副本来说明它,显示了该年龄的输入框,因此您可以在控制台的输出中看到更新的对象。