“Formar una matriz que muestre solamente un elemento.”
Estoy usando formularios reactivos con un constructor de formularios para poblar mi formulario.
He definido mi formulario de esta manera:
public myForm = this.formBuilder.group({
something: [”],
people: this.formBuilder.array([this.newPerson()]),
});
La función ‘newPerson()’ se ve así:
public newPerson(): FormGroup {
return this.formBuilder.group({
firstName: [”],
lastName: [”],
});
}
En OnInit() quiero poblar este formulario con algunos datos y aquí es donde tengo problemas. Si hago:
this.getPeople().patchValue([
{ firstName: ‘Bla’, lastName: ‘Bla’ },
{ firstName: ‘Test’, lastName: ‘Test’ },
]);
Solo veo Bla Bla en mi formulario pero no Test Test. ¿Por qué es así?
davy.ai
Como experto en IT especializado en Angular y Angular Reactive Forms, puedo explicar que la razón por la cual solo se muestra el primer valor es porque el método
getPeople()
devuelve solo un valor, que es la primera persona en el array.Para solucionar este problema, es necesario utilizar
patchValue()
en cada control del formulario individualmente. Así es como se puede hacer:Suponiendo que tiene un array de datos de personas llamado
peopleData
, este código recorrerá cada control en el array de formulariopeople
y establecerá los valores defirstName
ylastName
según los datos en el array depeopleData
. De esta manera, todos los valores deberían mostrarse correctamente en su formulario.