Angular 通过单击禁用按钮后未处理Keydown事件
在Angular中,我使用Angular 通过单击禁用按钮后未处理Keydown事件,angular,Angular,在Angular中,我使用@HostListener监听页面上的按键事件。我还有一个按钮,在我点击它之后它就被禁用了 我的问题是,在Firefox中,我按下按钮后不会得到keydown事件。我想这是因为整个页面失去了焦点。问题不在Chrome中 下面是一个行为示例: import { Component, NgModule, HostListener } from '@angular/core'; import { BrowserModule } from '@angular/platform-
@HostListener
监听页面上的按键事件。我还有一个按钮,在我点击它之后它就被禁用了
我的问题是,在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;
}
}
从'@angular/core'导入{Component,NgModule,HostListener};
从“@angular/platform browser”导入{BrowserModule};
@组成部分({
选择器:“我的应用程序”,
模板:`
点击我
{{key}}
`,
})
导出类应用程序{
禁用:布尔值=false;
键:字符串;
@HostListener('document:keydown',['$event']))
private handleKeyboardEvent(事件: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();
}
}
从'@angular/core'导入{Component,NgModule,HostListener};
从“@angular/platform browser”导入{BrowserModule};
@组成部分({
选择器:“我的应用程序”,
模板:`
点击我
{{key}}
`,
})
导出类应用程序{
禁用=错误;
键:字符串;
@HostListener('document:keydown',['$event']))
handleKeyboardEvent(事件:KeyboardEvent){
this.key=event.key;
}
禁用(){
this.disabled=true;
document.activeElement.blur();
}
}
我无法在Chrome中重现错误。我使用了Firefox。对不起,我在问题中没有具体说明。我可以看出,这在Chrome中不是问题。我使用的是Firefox。很抱歉没有具体说明。不幸的是,将焦点设置在document.body上并不能解决此问题。请尝试使用document.activeElement.blur();它在firefox上对我有效