Angulaire 2 variation de l'événement sur chaque pression de touche
L'événement de changement n'est appelée qu'une fois 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 des changements sur chaque pression de touche btw.
Vous devez vous connecter pour publier un commentaire.
J'ai simplement utilisé l'événement d'entrée et il a bien fonctionné comme suit:
dans .fichier html :
dans .ts fichier :
Utilisation
ngModelChange
en brisant les[(x)]
syntaxe dans son deux pièces, c'est à dire, la propriété de la liaison de données et de liaison d'événement:Il travaille pour la touche retour arrière trop.
L' (keyup) de l'événement est votre meilleur pari.
Voyons pourquoi:
Donc (keyup) est la plus sûre pour aller avec, car il...
keyup
est certainement l'un des plus sûrs toutefois, les options,input
événement est en avance d'une étape dekeyup
.keyup
contrairement àinput
, ne fonctionne pas si la valeur de la textbox est modifié par un autre moyen comme la liaison.(change)
à côté d'une solution de contournement et puis certains. La accepté de répondre totalement merdique!(ngModelChange)
?keydown
oukeyup
à la place. Certaines touches tout simplement de ne pas tirer surkeypress
. Voir aussi stackoverflow.com/questions/4843472/...[ngModel]="..."
et(keypress)="..."
le même champ (mymodel
). Il serait plus logique d'avoir quelque chose comme(keypress)="myKeyPressHandler($event.target.value)"
. Je suis sûr que(keypress)="$event.target.value"
seul passe toujours la plus récente valeur de la clé. Si ce n'est pas un Plunker qui permet de reproduire serait utile. Généralement(ngModelChange)="..."
est une meilleure option de toute façon. Il fonctionne mieux avec[ngModel]="..."
Une façon différente de gérer de tels cas est d'utiliser formControl et de vous abonner c'est
valueChanges
lorsque votre composant est initialisé, ce qui vous permettra d'utiliser rxjs opérateurs pour les exigences avancées comme l'exécution des requêtes http, appliquer un anti-rebond jusqu'à l'utilisateur de terminer l'écriture d'une phrase, prendre la dernière valeur sans précédent, ...FormGroup
Le secret de l'événement qui garde angulaire ngModel synchrone est l'événement d'appeler entrée. Donc la meilleure réponse à votre question devrait être:
archive .ts
Ce que vous cherchez est
Puis faire ce que vous voulez avec les données en accédant à la limite
this.mymodel
dans votre .ts fichier.Dans mon cas, la solution est: