Reputation: 491
How can I bind a keyevent listener on the document instead of an specific inputfield in Angular 2 using RC5?
For example:
I Know this "bind it to an element"
<input (keypress)="onKeyDown($event)" [(ngModel)]="something" type="text">
How can I bind it to the document for example
<div (keypress)="onKeyDown($event)"> <input /> ... </div>
Upvotes: 12
Views: 8781
Reputation: 11
You can also use rxjs for this
fromEvent<KeyboardEvent>(document, 'keydown')
.pipe(...)
.subscribe()
See: https://www.learnrxjs.io/learn-rxjs/operators/creation/fromevent
Upvotes: 1
Reputation: 658067
@HostListener('window:keydown', ['$event'])
onKeyDown(event) {
...
}
You can also do
<div (window:keypress)="onKeyDown($event)">
or
<div (document)="onKeyDown($event)">
Declarative filtering like
<div (window:keydown.alt.a)="onKeyDown($event)">
is currently not supported for global listeners
See also https://github.com/angular/angular/issues/7308
Upvotes: 24