2017-10-20 15 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'キーダウンイベントだけが再実装する必要があります。 –

関連する問題