在 Angular 中全局阻止 ALT 键

问题描述

我试图阻止 ALT 在我的 Angular 应用程序的所有输入字段中使用。这是我尝试过的。

在 app.component 中添加以下内容

@HostListener('document:keyup',['$event'])
public handleKeyboardEvent(event: KeyboardEvent): void {
    const keycode = event.key;

    if (event.altKey ||
        keycode.toLowerCase() == 'alt' ||
        event.altKey === true ||
        event.code == Constants.KeyCodes.AltRight ||
        event.code == Constants.KeyCodes.AltLeft) {
        event.returnValue = false;
        event.preventDefault();
        return;
    }
}

代码正确触发,但它不会阻止 Alt 组合键停止。例如,按 Alt + 5 会得到 ♣。奇怪的是,如果我添加一个断点并逐步执行代码,它会起作用,所以这就像一些奇怪的计时问题。

我将相同的代码添加到服务中,然后从 app.component 调用它,如下所示:

fromEvent(document,'keyup').subscribe((event: KeyboardEvent) => {
        this.utilityService.altKeyBlocking(event);
})

fromEvent(document,'keydown').subscribe((event: KeyboardEvent) => {
        this.utilityService.altKeyBlocking(event);
})

似乎唯一可行的是创建一个指令,并使用完全相同的代码将其添加到整个应用程序中的每个输入字段。

关于其他事情的想法我可以尝试在全球范围内实施。和平。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)