Je cherche un moyen de lier une fonction à toute ma page (lorsqu'un utilisateur appuie sur une touche, je veux qu'il déclenche une fonction dans mon component.ts)
C'était facile dans AngularJS avec un ng-keypress
mais ça ne marche pas avec (keypress)="handleInput($event)"
.
Je l'ai essayé avec un wrapper div sur toute la page mais cela ne semble pas fonctionner. cela ne fonctionne que lorsque l'accent est mis dessus.
<div (keypress)="handleInput($event)" tabindex="1">
typescript
angular
keypress
key-bindings
L.querter
la source
la source
window:keypress
?Réponses:
J'utiliser @HostListener décorateur au sein de votre composant:
Il existe également d'autres options comme:
propriété hôte au sein du
@Component
décorateurAngular recommande d'utiliser le
@HostListener
décorateur sur la propriété hôte https://angular.io/guide/styleguide#style-06-03renderer.listen
Observable.fromEvent
la source
esc
clé, utilisezkeyup
event. Merci à @TroelsLarsenfunction-key
(F1, F2, F3, ...)?La réponse de yurzui n'a pas fonctionné pour moi, cela pourrait être une version RC différente, ou cela pourrait être une erreur de ma part. Quoi qu'il en soit, voici comment je l'ai fait avec mon composant dans Angular2 RC4 (qui est maintenant assez obsolète).
la source
keydown
place dekeypress
Juste pour ajouter à cela en 2019 w Angular 8,
au lieu d'appuyer sur une touche, j'ai dû utiliser la touche enfoncée
à
Travailler Stacklitz
la source
Si vous souhaitez exécuter un événement sur une pression de bouton du clavier spécifique, dans ce cas, vous pouvez utiliser @HostListener. Pour cela, vous devez importer HostListener dans votre fichier ts de composant.
import {HostListener} depuis '@ angular / core';
puis utilisez la fonction ci-dessous n'importe où dans votre fichier ts de composant.
la source
Sachez que "document: keypress" est obsolète. Nous devrions plutôt utiliser document: keydown.
Lien: https://developer.mozilla.org/fr/docs/Web/API/Document/keypress_event
la source
Je pense que cela fait le meilleur travail
https://angular.io/api/platform-browser/EventManager
par exemple dans app.component
la source