L'événement change n'est appelé qu'après que le focus de l'entrée a changé. Comment puis-je faire en sorte que l'événement se déclenche à chaque pression de touche?
<input type="text" [(ngModel)]="mymodel" (change)="valuechange($event)" />
{{mymodel}}
La deuxième liaison change à chaque pression de touche btw.
À utiliser
ngModelChange
en décomposant la[(x)]
syntaxe en ses deux parties, à savoir la liaison de données de propriété et la liaison d'événement:Cela fonctionne également pour la touche de retour arrière.
la source
L'événement (keyup) est votre meilleur pari.
Voyons pourquoi:
Donc (keyup) est le plus sûr car il ...
la source
keyup
est à coup sûr l'une des options les plus sûres, mais l'input
événement a une longueur d'avancekeyup
.keyup
contrairement àinput
, ne fonctionne pas si la valeur de la zone de texte est modifiée d'une autre manière, par exemple la liaison.(change)
même temps qu'une solution de contournement, puis certaines. La réponse acceptée craint totalement!(ngModelChange)
?la source
keydown
ou à lakeyup
place. Certaines touches ne fonctionnent tout simplement paskeypress
. Voir aussi stackoverflow.com/questions/4843472/…Une autre façon de gérer de tels cas est d'utiliser formControl et de vous y abonner
valueChanges
lorsque votre composant est initialisé, ce qui vous permettra d'utiliser les opérateurs rxjs pour des exigences avancées telles que l'exécution de requêtes http, d'appliquer un rebounce jusqu'à ce que l'utilisateur ait fini d'écrire une phrase, de prendre la dernière valeur et omettre le précédent, ...la source
FormGroup
L'événement secret qui maintient le ngModel angulaire synchrone est l' entrée d' appel d'événement . Par conséquent, la meilleure réponse à votre question devrait être:
la source
archive .ts
la source
Ce que vous cherchez c'est
this.mymodel
Faites ensuite ce que vous voulez avec les données en accédant à la limite de votre fichier .ts.la source
Dans mon cas, la solution est:
la source
Pour les formulaires réactifs, vous pouvez vous abonner aux modifications apportées à tous les champs ou simplement à un champ particulier.
Obtenez toutes les modifications d'un FormGroup:
Obtenez le changement d'un champ spécifique:
la source
J'utilise keyup sur un champ numérique, mais aujourd'hui j'ai remarqué en chrome l'entrée a des boutons haut / bas pour augmenter / diminuer la valeur qui n'est pas reconnue par keyup.
Ma solution consiste à utiliser les touches et à changer ensemble:
Les tests initiaux indiquent que cela fonctionne bien, publieront si des bogues ont été trouvés après des tests supplémentaires.
la source