すべてのキーボード入力を検出し、設定可能なマッピングに基づいてキーストロークをアクションに変換し、さまざまな要素がバインドできるオブザーバブルを公開して特定のキー押下に反応するサービスを作成したいと考えています。サービスでHostListenerを使用することはできますか?
以下は私のコードを単純化したものですが、HostListenerがコンポーネントに含まれていたときに機能しましたが、今度は確実に初期化されても起動しないサービスに移動しました。このような入力をサービスで検出することはできませんか?
import { Injectable, HostListener } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class InputService {
@HostListener('window:keydown', ['$event'])
keyboardInput(event: any) {
console.log(event);
}
}
私はそれが可能ではないis't思います。代わりに 'window.addEventListener'を使用してください – yurzui