Estoy buscando una forma de vincular una función a toda mi página (cuando un usuario presiona una tecla, quiero que active una función en mi componente.ts)
Fue fácil en AngularJS con a ng-keypress
pero no funciona con (keypress)="handleInput($event)"
.
Lo probé con un contenedor div en toda la página, pero no parece funcionar. solo funciona cuando el foco está en él.
<div (keypress)="handleInput($event)" tabindex="1">
typescript
angular
keypress
key-bindings
L.querter
fuente
fuente
window:keypress
?Respuestas:
Me gustaría utilizar @HostListener decorador dentro de su componente:
También hay otras opciones como:
propiedad del anfitrión dentro del
@Component
decoradorAngular recomienda usar
@HostListener
decorador sobre la propiedad del host https://angular.io/guide/styleguide#style-06-03renderer.escuchar
Observable.fromEvent
fuente
esc
clave, usekeyup
event. Gracias a @TroelsLarsenfunction-key
(F1, F2, F3, ...)?La respuesta de yurzui no funcionó para mí, podría ser una versión RC diferente, o podría ser un error de mi parte. De cualquier manera, así es como lo hice con mi componente en Angular2 RC4 (que ahora está bastante desactualizado).
fuente
keydown
lugar dekeypress
Solo para agregar a esto en 2019 w Angular 8,
en lugar de presionar teclas, tuve que usar keydown
a
Stacklitz de trabajo
fuente
Si desea realizar cualquier evento en cualquier botón específico del teclado, en ese caso, puede usar @HostListener. Para ello, debe importar HostListener en el archivo ts de su componente.
importar {HostListener} desde '@ angular / core';
luego use la siguiente función en cualquier lugar del archivo ts de su componente.
fuente
Tenga en cuenta que "document: keypress" está en desuso. Deberíamos usar document: keydown en su lugar.
Enlace: https://developer.mozilla.org/fr/docs/Web/API/Document/keypress_event
fuente
Creo que esto hace el mejor trabajo
https://angular.io/api/platform-browser/EventManager
por ejemplo en app.component
fuente