我有一个基于Angular Material的Grid Witch,它具有Edit选项。如果用户单击“编辑”,我将使用mat-dialog打开表单。如果用户现在尝试关闭表单,则打开另一个对话框,询问他是否要保存更改的数据。如果他选择保存,我将通过api将数据保存到我的后端,这一切都很好,并且两个mat对话框都关闭了,我又回到了网格上。我想要做的是去告诉网格刷新,以便反映保存的更改。
这是我在“编辑”表单中使用的代码
close() {
if (this.bucketForm.dirty) {
const dialogRef = this.dialog.open(DialogComponent,
{ disableClose: true,
data: { message : 'Are you sure you want to Exit without saving your changes ?', title : 'Unsaved Changes' }
});
dialogRef.afterClosed().subscribe( result => {
if (result === true) {
console.log('Will do an ' + this.submitText + ' ' + this.docID);
this.saveUpdade();
this.dialogRef.close();
} else {
this.dialogRef.close();
}
});
} else {
this.dialogRef.close();
}
}
答案 0 :(得分:0)
根据角度材料documentation,您可以从对话框获取结果到网格组件。在那里,您可以做任何想要的结果。
答案 1 :(得分:0)
如果您尝试基于上一个对话框的答案创建另一个对话框,则最好的选择是从第一个对话框退出,如果有结果,请在第一个对话框的afterClosed订阅中显示第二个对话框。 / p>
const editDialog = this.dialogRef.open(EditComponent, {
...
});
editDialog.afterClosed().subscribe( result => {
if (result) {
let confirmDialog = this.dialogRef.open(ConfirmDialog, {...});
confirmDialog.afterClosed().subscribe( result => {
...
});
}
});
如果您试图从对话框中开始该对话框,则可以从编辑对话框中创建一个新的确认对话框,然后基于该对话框的结果,将您的响应返回到网格组件。