Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 2 Global Key detection

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>
like image 661
Emanuel Weinsjö Avatar asked Aug 16 '16 11:08

Emanuel Weinsjö


1 Answers

@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

like image 170
Günter Zöchbauer Avatar answered Sep 21 '22 23:09

Günter Zöchbauer