Angular 11 - @HostListener "window:beforeunload" 触发两次
创始人
2024-10-15 09:32:39
0

问题描述: 在Angular 11中,使用@HostListener监听"window:beforeunload"事件时,会触发两次。

解决方法: 问题的原因是Angular会自动在组件中注册window:beforeunload事件的监听器,导致我们手动添加的@HostListener监听器被调用两次。为了解决这个问题,我们需要取消自动注册的监听器。

以下是解决方法的代码示例:

  1. 在组件中导入HostListener和Inject装饰器:
import { Component, HostListener, Inject } from '@angular/core';
  1. 在组件类中添加@HostListener装饰器,并取消自动注册的监听器:
@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.component.html',
  styleUrls: ['./your-component.component.css']
})
export class YourComponentComponent {
  @HostListener('window:beforeunload', ['$event'])
  beforeUnloadHandler(event: Event) {
    // 在这里处理beforeunload事件
    // 注意:这个监听器只会被调用一次
  }

  constructor(@Inject(Window) private window: Window) {
    // 取消自动注册的监听器
    this.window.onbeforeunload = null;
  }
}

通过以上步骤,我们手动添加的@HostListener监听器将只会被调用一次,解决了"window:beforeunload"事件触发两次的问题。

相关内容

热门资讯

推荐攻略!we-poker辅助... 推荐攻略!we-poker辅助,hhpoker有后台操作吗,切实教程(有挂辅助)关于hhpoker有...
每日必备!pokemmo手机版... 每日必备!pokemmo手机版透视脚本,wpk辅助器,透明教程(有挂神器);建议优先通过pokemm...
一分钟揭秘!hhpoker是正... 《一分钟揭秘!hhpoker是正规的吗,wepoker怎么挂底牌,玩家教你(有挂透明)》 hhpok...
我来教教大家!wepoker看... 我来教教大家!wepoker看底牌,约局吧德州可以透视吗,揭秘攻略(有挂透视)1、不需要AI权限,帮...
记者揭秘!epoker透视底牌... 记者揭秘!epoker透视底牌,大菠萝辅助器,2025教程(有挂方法);玩家必备必赢加哟《13670...
教程攻略!pokemmo辅助器... 1、教程攻略!pokemmo辅助器手机版下载,智星德州插件2024最新版,玩家教程(有挂技巧)2、进...
玩家交流!hhpoker必备开... 玩家交流!hhpoker必备开挂,wepoker有没有辅助,微扑克教程(有挂攻略);1分钟了解详细教...
一分钟教会你!wepoker有... 一分钟教会你!wepoker有辅助器吗,约局吧怎么看有没有挂,微扑克教程(有挂透明);致您一封信;亲...
盘点一款!aa poker辅助... 盘点一款!aa poker辅助包,pokemmo手机辅助软件,系统教程(有挂攻略);亲真的是有正版授...
玩家必备教程!wejoker辅... 1、玩家必备教程!wejoker辅助软件价格,德普之星辅助器怎么用,我来教教你(有挂透视)(UU p...