ユーザーが Chrome ウィンドウの [閉じる] ボタン (右上) を押したときに、Angular Material ダイアログ ボックス (ポップアップ ウィンドウ) を表示しようとしています。ダイアログモーダルは、ユーザーが変更を保存したい場合、またはキャンセルしたい場合、ユーザーにプロンプトを表示する必要があります。
ただし、モーダルは一瞬しか表示されず、ユーザーを待たずに閉じます。以下のコード参照を使用します。どうすれば修正できますか?
@HostListener('window:beforeunload', ['$event'])
beforeunloadHandler(event) {
this.openDocumentSaveDialog();
}
public openDocumentSaveDialog(): void {
const documentSaveDialogRef = this.documentSaveDialog.open(DocumentSaveDialogComponent, {
width: '600px',
height: '200px',
disableClose: true,
autoFocus: false,
data: null
});
documentSaveDialogRef.afterClosed().subscribe(result => {
this.closeMenu.emit()
});
}
注: ネイティブ クローム ブラウザのポップアップを表示するのではなく、カスタム ポップアップを表示します。
Angular マテリアル ダイアログ ボックス: https://material.angular.io/components/dialog