如何告诉父窗口从对话框刷新其网格?

时间:2019-09-21 21:19:30

标签: angular angular-material

我有一个基于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();
      }
  }

2 个答案:

答案 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 => {
            ...
       });

    }
});

如果您试图从对话框中开始该对话框,则可以从编辑对话框中创建一个新的确认对话框,然后基于该对话框的结果,将您的响应返回到网格组件。