es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“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í?

Tags:  ,

Answer

  1. Avatar for 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:

    const people = this.myForm.get('people') as FormArray;
    
    people.controls.forEach((control, index) => {
      control.patchValue({
        firstName: peopleData[index].firstName,
        lastName: peopleData[index].lastName
      });
    });
    

    Suponiendo que tiene un array de datos de personas llamado peopleData, este código recorrerá cada control en el array de formulario people y establecerá los valores de firstName y lastName según los datos en el array de peopleData. De esta manera, todos los valores deberían mostrarse correctamente en su formulario.

Comments are closed.