hostlistener event esc javascript angular escaping keypress

javascript - event - Angular 2 HostListener keypress detectar escape key?



hostlistener click angular 4 (4)

Enfoque moderno

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

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 estoy intentando 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!''); } }


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 en forma más corta:

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


Inténtelo 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); }