javascript - 如何使用 HostListener 防止相同事件在不同组件中以角度传播?
问题描述
我有两个组件,它们都在听键盘输入。如果其中一个满足某个条件,那么我想防止在听完这些事件后发生任何其他操作。这是一个片段:
组件 1(全屏覆盖):
@HostListener("document:keydown", ["$event"])
public handleKeyboardEvent(event: KeyboardEvent): void {
if (!this.isShow) {
return;
}
event.preventDefault();
event.stopPropagation();
event.returnValue = false;
}
组件 2(对话框):
@HostListener("document:keydown.escape", ["$event"])
public onEscKeyUp(e: KeyboardEvent): void {
this.dial.close();
}
因此,当显示叠加层时,如果有意义的话,我不希望关闭对话框。我有那个代码,但它不起作用。
解决方案
我已经想出了如何让它工作:
@HostListener("document:keydown", ["$event"])
public handleKeyboardEvent(event: KeyboardEvent): boolean
{
if (!this.isShow)
{
return true;
}
event.stopImmediatePropagation();
return false;
}
推荐阅读
- continuous-integration - 如何在 gitlab-ci.yaml 中设置环境变量?
- java - 无法找到具有给定名称的属性
- c# - 将 Thread.CurrentPrincipal 设置为当前的 WindowsIdentity
- c - 全局数组失去其价值
- java - Hibernate 映射到自引用的多对多映射
- excel - 根据两个不同的标准突出显示行 - 更新 #2
- r - 由数据框中的列名引起的 arima xreg 参数错误
- javascript - 如何使每个帖子独有的 iframe 预览。我的预览都显示页面上最后一篇文章的相同内容
- python - 尝试将一组结果写入 Python 中的 csv 文件,但只打印一行
- google-apps-script - 传递文本框变量以查询 Google 表格