J'essaye de créer un composant modal et je veux le configurer ainsi quand un utilisateur clique sur échappement, le modal se ferme. Cependant, je ne peux pas sembler obtenir une liaison de pression sur le composant fonctionnant.Impossible d'obtenir un événement keypress sur un élément non-événement fonctionnant
j'ai commencé en essayant une foule de liaison:
@HostListener('keypress', ['$event']) public escapePressed(key) {
console.log(key);
}
mais je ne vois rien connecté à moins que je suis dans une entrée dans mon élément. J'ai changé l'écouteur en window:keypress
et j'ai commencé à voir les événements enregistrés, et j'ai pensé que je pourrais le configurer pour ne déclencher que si un modal est ouvert, mais je pensais que je devrais encore essayer de comprendre comment le faire correctement. De plus, si plusieurs modaux ont été créés, il y aura plusieurs liaisons de fenêtres, toutes faisant la même chose, ce qui est inefficace.
Je ne sais pas comment résoudre ce problème.
j'ai eu le sentiment qu'il fallait faire avec attention, mais je ne savais pas comment se concentrer correctement il. Cependant, si l'accent est mis sur une entrée, par exemple, il ne fonctionnera plus, n'est-ce pas? Votre réponse me fait me demander si la fenêtre lie + seulement le déclenchement quand un modal est ouvert est la meilleure façon, mais je ne sais pas comment éviter plusieurs binds. – RhoVisions
tant que votre entrée est dans la balise div vous êtes en sécurité. – crook
Mais avec tabindex, l'utilisateur ne devrait-il pas cliquer sur le div en premier? Je l'ai juste essayé et j'ai dû me concentrer moi-même sur la div pour déclencher les keybinds. Si l'utilisateur doit cliquer sur quelque chose, il peut simplement cliquer sur la case de fermeture que j'ai. Merci pour l'info, mais je ne pense pas que ce soit la solution que je cherche. – RhoVisions