Estoy usando el siguiente método para detectar pulsaciones de teclas en una página. Mi plan es detectar cuándo se presiona la tecla Escape y ejecutar un método si es así. Por el momento, solo intento registrar qué tecla se presiona. Sin embargo, la tecla Escape nunca se detecta.
@HostListener('document:keypress', ['$event']) handleKeyboardEvent(event: KeyboardEvent) { console.log(event); let x = event.keyCode; if (x === 27) { console.log('Escape!'); } }Pruébelo con un evento keydown o keyup para capturar la Esc . En esencia, puede reemplazar document:keypress con document:keydown.escape :
@HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) { console.log(event); }Funcionó para mí usando el siguiente código:
const ESCAPE_KEYCODE = 27; @HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { if (event.keyCode === ESCAPE_KEYCODE) { // ... } }o de forma más corta:
@HostListener('document:keydown.escape', ['$event']) onKeydownHandler(evt: KeyboardEvent) { // ... }event.key == "Escape" Las antiguas alternativas ( .keyCode y .which ) están en desuso.
@HostListener('document:keydown', ['$event']) onKeydownHandler(event: KeyboardEvent) { if (event.key === "Escape") { // Do things } }