tengo el siguiente formulario:
form = this.builder.group({ form2: this.builder.array([ this.builder.group({ name: new FormControl(), surname: new FormControl(), }) ]), });en mi oninit estoy haciendo esto para establecer un control de formulario con un valor establecido
this.form.controls.personNameField.setValue(this.person.name);Pero esto no funciona, probablemente debido a que los controles están dentro de un formaray. Pero, ¿cómo puedo acceder a mis controles formaray?
Puede agregar controles con valores en un FormArray como este:
get form2Array(){ return this.form.controls.form2 as FormArrray; } // If form control exists at index addPerson(index: number, person: any){ const personFormGroup = this.form2Array.at(index) as FormGroup personFormGroup.setValue(person) //handle according to your code } // If form control does not exist at index addPerson(index: number, person: any){ this.form2Array.at(index).setControl(index, this.builder.group({ name: this.builder.control({}), surname: this.builder.control({}), })) const personFormGroup = this.form2Array.at(index) as FormGroup personFormGroup.setValue(person) //handle according to your code }Puede llegar a su control de formulario con lo siguiente:
ngOnInit() { (this.form.get('form2') as FormArray).at(0).patchValue({ name: 'test' }); } Así que obtenemos formaray dentro del grupo principal, luego obtenemos el primer formgroup en formaray (en el índice 0) y parcheamos el valor para el name formcontrol.