¿Alguna idea de por qué cuando ejecuto el siguiente código obtengo el evento valueChanges del control 'firstName' activado?
let form: FormGroup = this.createForm(); form.controls['firstName'].enable(); form.controls['firstName'].valueChanges(value=>{ //some code }); Como ningún valor ha cambiado (solo el estado), no esperaría que valueChanges se active aquí, solo statusChanged .
¿Me estoy perdiendo de algo?
No tengo idea de por qué se comporta como lo hace, pero puede enviar emitEvent: false para habilitar/deshabilitar sin activar valueChanges .
form.controls['firstName'].enable({ emitEvent: false });Básicamente, el formulario completo se asigna a un modelo, por lo que cada vez que habilita o deshabilita cualquier control, la propiedad del modelo de formulario cambia. Y debido a que el modelo está cambiando, se activará el evento valueChanges . Creo que es normal.
Tengo la versión angular 6.0.3
this.form.get('inputName').setValue(newValue, {onlySelf: true, emitEvent: false});Esto funciona para mí.