Reputation: 209
In Angular I use @HostListener
to listen for keydown events on my page. I also have a button, which is disabled after I click it.
My problem is that in Firefox I don't get the keydown events after I press the button. I think it is because the whole page loses focus. The problem is not there in Chrome.
Here is an example of the behavior:
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;
}
}
How do I keep getting the keydown events after I disable the button?
Upvotes: 0
Views: 419
Reputation: 149
I can't reproduce on chrome using the plunker. What's your browser ?
Wathever you could try to change the focus. Something like :
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();
}
}
Upvotes: 1