Me gustaría entender completamente cuáles son las diferencias entre .value y .setValue en angular 7+ y en qué circunstancias son adecuadas para usar .value o .setValue.
Ejemplo 1: this.createLocForm.setValue(data);
Ejemplo 2: this.data = this.createLocForm.value
setValue y patchValue son métodos de Angular FormGroup. Ambos establecen el valor de un control en un FormGroup. Pero el value se usa para obtener un valor, no para establecerlo . La diferencia entre set/patch es que setValue no puede excluir algunos controles, mientras que patchValue puede hacer precisamente eso.
Supongamos que tenemos un FormGroup con dos controles: name y age . Si queremos establecer el valor de un control, esto no funcionará, por lo tanto, debemos establecer el valor de ambos controles:
formgroup.setValue({name: 'Mocrosoft', age: '25'});Es necesario mencionar todos los controles dentro del método. Si esto no se hace, arrojará un error.
Por otro lado patchValue es mucho más fácil en esa parte. Digamos que solo queremos asignar el nombre como un nuevo valor:
formGroup.patchValue({name:'Mocrosoft'});Utilice el método setValue() para establecer un nuevo valor para el control individual. El método setValue() se adhiere estrictamente a la estructura del grupo de formularios y reemplaza el valor completo del control. Por favor lea esto para más detalles
Esta es una propiedad de solo lectura . No puede asignar ningún valor a esta propiedad. Solo puede leer los valores de control usando esta propiedad.
Ambos son completamente diferentes:
.setValue() es una función que solía:
Sets the value of the FormGroup. It accepts an object that matches the structure of the group, with control names as keys.
Por ejemplo:
Si usted tiene:
const formGroup = new FormGroup({ name: new FormControl(), mobileNo: new FormControl() });entonces su setValue:
formGroup.setValue({name: 'Prashant', mobileNo: '99XXXXXXXX'});En el caso del siguiente código, no funcionará:
formGroup.setValue({full_name: 'Prashant', mobileNumber: '99XXXXXXXX'}); -- The keys are important for set valueo
formGroup.setValue({ name: 'Prashant'}); -- Will not work as it is missing mobileNo key from the specified object.value es una propiedad:que solía obtener/acceder al valor de formGroup.