2017-02-20 13 views
12

次の方法を使用して、ページのキー押下を検出しています。私の計画は、エスケープキーが押されたときを検出し、そうであればメソッドを実行することです。私はちょうど押されたキーを記録しようとしています。ただし、エスケープキーは検出されません。角度2のHostListenerキー押下でエスケープキーを検出しますか?

@HostListener('document:keypress', ['$event']) 
handleKeyboardEvent(event: KeyboardEvent) { 
    console.log(event); 
    let x = event.keyCode; 
    if (x === 27) { 
     console.log('Escape!'); 
    } 
} 

答えて

19

Escキーをキャプチャする​​またはkeyupイベントでそれを試してみてください。

+1

おかげで。あなたは私の一日を作った! –

+0

キーイベントのどちらを使用するかを決めるには、このSOの答えをチェックしてください:https://stackoverflow.com/a/46403258/3380547 – Sagar

+0

これは私のために働いたのは 'keyup'だけでした: – vincecampanale

4

KeyDownイベントと動作するようには思えkeyUpイベント:

const ESCAPE_KEYCODE = 27; 

@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { 
    if (event.keyCode === ESCAPE_KEYCODE) { 
     // ... 
    } 
} 

か短いのように:http://embed.plnkr.co/VLajGbWhbaUhCy3xss8l/

15

これは、次のコードを使用して、私のために働いた

@HostListener('document:keydown.escape', ['$event']) onKeydownHandler(evt: KeyboardEvent) { 
    // ... 
} 
0

現代的なアプローチを

@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { 
    if (event.key === "Escape") { 
     // Do things 
    } 
} 
関連する問題