2017-10-20 127 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事件是唯一需要重新實現以實現相同功能的兩件事情。 –

相關問題