angular - 单击禁用按钮后未处理 Keydown 事件
问题描述
在 Angular 中,我@HostListener
用来监听页面上的 keydown 事件。我还有一个按钮,单击后它会被禁用。
我的问题是,在 Firefox 中,按下按钮后我没有收到 keydown 事件。我认为这是因为整个页面失去了焦点。Chrome 中不存在问题。
以下是该行为的示例:
import { Component, NgModule, HostListener } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@Component({
selector: 'my-app',
template: `
<button [disabled]="disabled" (click)="disabled = true">Click me</button>
<p>{{key}}</p>
`,
})
export class App {
disabled: boolean = false;
key: string;
@HostListener('document:keydown', ['$event'])
private handleKeyboardEvent(event: KeyboardEvent) {
this.key = event.key;
}
}
禁用按钮后如何继续获取 keydown 事件?
解决方案
我无法使用 plunker 在 chrome 上重现。你的浏览器是什么?
不管你是否可以尝试改变焦点。就像是 :
import { Component, NgModule, HostListener } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@Component({
selector: 'my-app',
template: `
<button [disabled]="disabled" (click)="disable()">Click me</button>
<p>{{key}}</p>
`,
})
export class App {
disabled = false;
key: string;
@HostListener('document:keydown', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
this.key = event.key;
}
disable() {
this.disabled = true;
document.activeElement.blur();
}
}
推荐阅读
- encryption - 将低级 OpenSSL API 迁移到高级 OpenSSL API 所需的建议
- stack - 关于 L = {a^nb^(2n) | PDA 的说明 n>=1}
- caching - 负载均衡器直接连接到帐户所在的位置
- python - Python 正则表达式模式匹配以点开头并以 dict 格式存储
- python - 联合类型的 Python Cerberus 验证
- powershell - 批处理文件中的 Powershell -replace 和环境变量有一些问题
- javascript - 在反应网站中添加一个按钮以更改为暗模式
- react-native - React Native 导航就像 Instagram 中的点击帖子一样
- r - 无法用印地语文本重命名列
- c++ - Qt::QMediaPlayer:如何禁用帧缓冲以减少 RTSP 流延迟或延迟?