2017-10-20 126 views
2

我有一个下面的对话框组件(我打开使用另一个组件中的dialog.open(MyDialogComponent))。角度材质对话框返回值

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

    ngOnInit() {} 
} 

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

回答

4

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

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

这种方式调用组件接收数据,无论对话是由按钮关闭还是在别处单击。

+0

您还应该订阅键盘事件来处理'esc'键。我浏览了源代码,并没有真正看到更好的方法来做到这一点。幸运的是,背景点击和'esc' keydown事件是唯一需要重新实现以实现相同功能的两件事情。 –

相关问题