在Angular 12中,可能会遇到在窗口关闭时未触发“onbeforeunload”事件的问题。要解决这个问题,可以使用以下两种方法之一:
方法1:调用window对象中的addEventListener方法来手动添加事件监听器,这将确保在窗口关闭之前触发该事件。
在组件类中添加以下代码:
ngOnInit(): void { window.addEventListener('beforeunload', (event) => { event.preventDefault(); event.returnValue = 'Are you sure you want to leave?'; }); }
在上面的代码中,我们手动'beforeunload”事件添加到窗口对象中,并向其传递了一个回调函数来触发该事件。在回调函数中,我们还使用了preventDefault()函数来防止浏览器默认行为,以及设置event.returnValue字符串来显示警告消息。
方法2:使用HostListener装饰器来添加“window:beforeunload”事件监听器。
在组件类中添加以下代码:
@HostListener('window:beforeunload', ['$event']) doSomething($event) { console.log('Doing something', $event); }
在上面的代码中,我们使用@HostListener装饰器'window:beforeunload”事件添加到组件类中,并传递了一个回调函数来触发该事件。在回调函数中,我们可以执行所需的操作,例如记录信息或显示消息。
使用以上任一方法都可以解决在Angular 12中未触发“onbeforeunload”事件的问题。