角度材质对话框返回值

时间:2017-10-20 13:07:04

标签: angular dialog angular-material2

我有一个以下对话框组件(我在另一个组件中使用dialog.open(MyDialogComponent)打开)。

export class MyDialogComponent implements OnInit {
  constructor(public matDialogRef: MatDialogRef<MyDialogComponent>) {}

  ngOnInit() {}
}

我知道我可以通过执行绑定到对话框组件中按钮的matDialogRef.close(dataToReturn)将任何数据返回给调用组件。但是,如果用户点击其他地方而不是弹出窗口关闭它,我怎么能返回数据?

3 个答案:

答案 0 :(得分:13)

如果有人有兴趣我找到了解决方案(不确定它是否是最好的解决方案)。只是禁用默认关闭操作,以便弹出窗口不会在背景点击时关闭,而在背景点击时使用数据参数关闭它。

matDialogRef.disableClose = true;//disable default close operation
matDialogRef.backdropClick().subscribe(result => {
  matDialogRef.close(dataToReturn);
});

这样,无论对话框是按钮关闭还是点击其他地方,调用组件都会接收数据。

答案 1 :(得分:1)

调用close(dataToReturn)中的beforeClose()来设置对话框结果:

constructor(public matDialogRef: MatDialogRef<MyDialogComponent>) {
    matDialogRef.beforeClose().subscribe(() => matDialogRef.close(this.dataToReturn));
}

如果通过单击背景或单击 ESC 关闭对话框,则此方法将起作用。

答案 2 :(得分:0)

    //In dialog component.
    dataYouWantToReturn = true; //set data.

    this.dialogRef.close(dataYouWantToReturn); 

    //In component calling the dialog component.
    dialogRef.afterClosed().subscribe(result => {
        if (result) {
            console.log("Result is TRUE!");
        }
    });