Angular 通过单击禁用按钮后未处理Keydown事件

Angular 通过单击禁用按钮后未处理Keydown事件,angular,Angular,在Angular中,我使用@HostListener监听页面上的按键事件。我还有一个按钮,在我点击它之后它就被禁用了 我的问题是,在Firefox中,我按下按钮后不会得到keydown事件。我想这是因为整个页面失去了焦点。问题不在Chrome中 下面是一个行为示例: import { Component, NgModule, HostListener } from '@angular/core'; import { BrowserModule } from '@angular/platform-

在Angular中,我使用
@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上对我有效