Angular 2 全局键检测

Angular 2 Global Key detection

如何使用 RC5 在文档上绑定一个键事件侦听器而不是 Angular 2 中的特定输入字段?

例如:

我知道这个"bind it to an element"

<input (keypress)="onKeyDown($event)" [(ngModel)]="something" type="text">

如何将它绑定到文档,例如

<div (keypress)="onKeyDown($event)"> <input /> ... </div>
@HostListener('window:keydown', ['$event'])
onKeyDown(event) {
  ...
}

你也可以

<div (window:keypress)="onKeyDown($event)">

<div (document)="onKeyDown($event)">

这样的声明式过滤
<div (window:keydown.alt.a)="onKeyDown($event)">

目前不支持全局侦听器

另见 https://github.com/angular/angular/issues/7308

你也可以为此使用 rxjs

fromEvent<KeyboardEvent>(document, 'keydown')
  .pipe(...)
  .subscribe()

参见:https://www.learnrxjs.io/learn-rxjs/operators/creation/fromevent