我正在使用 @HostListener 来防止窗口重新加载。我已经实现了如下代码 -
@HostListener('window:beforeunload', ['$event'])
unloadNotification($event: any) {
let checkSave = true;
for( let index = 0; index < this.data.length; index++ ) {
if( !this.data[index].id ) {
checkSave = false;
break;
}
}
if( !checkSave ) {
const dialogRef = this.dialog.open(SomeComponent, {
data: {
refresh: true
}, width: '500px'
});
dialogRef.afterClosed().subscribe(result => {
if( result.refresh ) {
this.data = [];
window.location.reload();
}
} );
$event.preventDefault();
}
}
如果我的 data 数组中的任何对象缺少 id,我会尝试限制刷新。在这种情况下,我会显示一个 Angular 材质对话框,要求确认。上面的代码工作得很好,唯一的问题是,当我刷新页面时,会弹出一个确认窗口,要求确认重新加载,然后显示我的 Angular 材质对话框。我不希望显示确认窗口,因为我已经使用 Angular 对话框处理了页面刷新。
问题 - 有没有办法完全阻止页面刷新或在弹出确认窗口时以编程方式单击“取消”按钮?
出于安全原因,不可能完全阻止页面刷新。