2017-05-29 16 views
3

私はESC猿のボタンが押されるときに、いくつかの方法を呼びたいと思います。私はこの方法でそれをやった:ユーザーがkeybordのいずれかのボタンをクリックしたときに特定のボタンにHostListenerを設定することはできますか?

@HostListener('window:keydown', ['$event']) 
clickEscape(event: KeyboardEvent) { 
    //if ESC was pressed 
    if(event.keyCode === 27) { 
     this.someMethod(); 
    } 
} 

しかしclickEscape方法は、毎回呼び出されます。私の質問は:

ESCapeボタンを検出したときにのみメソッドが呼び出されるようにHostListenerを設定することはできますか? 私はスタイルで何かを考えていた:

@HostListener('window:keydown["ESCAPE"]') 
someMethod() { 
    //... 
} 

同様のイベントがありますか?

+0

https://stackoverflow.com/questions/41420153/angular2-triggering-host-listeners-on-a-button-click –

答えて

2

あなたは確かにkeydown.escapeを使用することができます。

@HostListener('window:keydown.escape') 
someMethod() { 
    //... 
} 
+0

それは 'で動作します@ HostListener( 'window:keydown。$ {key}') '、テンプレート文字列?それらを使用することはできませんまたはコメントはナットになります.. hehehe – SrAxi

+2

@ SrAxiいいえ、それは不可能です。注釈( '@ HostListener')は、任意のコンポーネント変数が知られる前に設定されます。 – PierreDuc

+0

@PierreDuc、すべてのブラウザが同じ方法で 'エスケープ'を解釈することは確かできますか?キーコードはより安全に見える –

関連する問題