El evento de cambio solo se llama después de que el foco de la entrada ha cambiado. ¿Cómo puedo hacer que el evento se active en cada pulsación de tecla?
<input type="text" [(ngModel)]="mymodel" (change)="valuechange($event)" />
{{mymodel}}
El segundo enlace cambia en cada pulsación de tecla por cierto.
Use
ngModelChange
dividiendo la[(x)]
sintaxis en sus dos partes, es decir, enlace de datos de propiedad y enlace de evento:También funciona para la tecla de retroceso.
fuente
El evento (keyup) es tu mejor apuesta.
Veamos por qué:
Entonces (keyup) es el más seguro, ya que ...
fuente
keyup
es sin duda una de las opciones más seguras, sin embargo, elinput
evento está un paso por delantekeyup
.keyup
a diferenciainput
, no funciona si el valor del cuadro de texto se cambia de otra manera, por ejemplo, el enlace.(change)
junto con una solución alternativa y algo más. ¡La respuesta aceptada apesta totalmente!(ngModelChange)
?fuente
keydown
o en sukeyup
lugar. Algunas teclas simplemente no se activankeypress
. Ver también stackoverflow.com/questions/4843472/…Una forma diferente de manejar tales casos es usar formControl y suscribirse
valueChanges
cuando se inicialice su componente, lo que le permitirá usar operadores rxjs para requisitos avanzados como realizar solicitudes http, aplicar un rebote hasta que el usuario termine de escribir una oración, tome el último valor y omitir anterior, ...fuente
FormGroup
El evento secreto que mantiene ngModel angular síncrono es la entrada de llamada de evento . Por lo tanto, la mejor respuesta a su pregunta debería ser:
fuente
archivo .ts
fuente
Lo que estás buscando es
Luego haga lo que quiera con los datos accediendo al enlace
this.mymodel
en su archivo .ts.fuente
En mi caso, la solución es:
fuente
Para los formularios reactivos, puede suscribirse a los cambios realizados en todos los campos o solo en un campo en particular.
Obtenga todos los cambios de un FormGroup:
Obtenga el cambio de un campo específico:
fuente
He estado usando keyup en un campo numérico, pero hoy noté en Chrome que la entrada tiene botones arriba / abajo para aumentar / disminuir el valor que no se reconoce por keyup.
Mi solución es usar keyup y cambiar juntos:
Las pruebas iniciales indican que esto funciona bien, se volverá a publicar si se encontraron errores después de más pruebas.
fuente