Как насчет использования Host Listener?
Для прослушивания окна событий мы будем использовать HostListener
API. Этот API позволяет нам регистрировать конкретного прослушивателя событий в браузере, а затем вызывать методы в наших компонентах, чтобы реагировать на них.
Вот пример кода:
Html:
<button (click)="decrement()">-</button>
{{value}}
<button (click)="increment()">+</button>
Ts:
import { Component, HostListener } from '@angular/core';
export enum KEY_CODE {
RIGHT_ARROW = 39,
LEFT_ARROW = 37
}
@Component({
selector: 'demo-app',
templateUrl: 'app/app.component.html'
})
export class AppComponent {
value = 0;
constructor() { }
@HostListener('window:keyup', ['$event'])
keyEvent(event: KeyboardEvent) {
console.log(event);
if (event.keyCode === KEY_CODE.RIGHT_ARROW) {
this.increment();
}
if (event.keyCode === KEY_CODE.LEFT_ARROW) {
this.decrement();
}
}
increment() {
this.value++;
}
decrement() {
this.value--;
}
}
Проверьте это blogpost для более подробной информации.