2017-02-20 87 views
12

Я использую следующий метод для обнаружения нажатия клавиш на странице. Мой план состоит в том, чтобы обнаружить, когда нажата клавиша Escape и запустить метод, если это так. На данный момент я просто пытаюсь записать, какой ключ нажат. Однако ключ Escape не обнаружен.Угловой 2 HostListener keypress обнаруживает escape-ключ?

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

ответ

19

Попробуйте его с keydown или keyup событие, чтобы захватить ключ Esc.

+1

Спасибо, брат. вы сделали мой день! –

+0

Чтобы решить, какое из ключевых событий нужно использовать, проверьте этот ответ SO: https://stackoverflow.com/a/46403258/3380547 – Sagar

+0

Это был только «keyup», который работал на меня: палец вверх: – vincecampanale

15

Он работал для меня, используя следующий код:

const ESCAPE_KEYCODE = 27; 

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

или в более короткий путь:

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

Современный подход

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