Error cuando se usa setControl o patchValue en una matriz de forma angular
Por favor, ayude, he anidado la matriz de formularios, ver a continuación:
this.form = this.formBuilder.group({
projectTitle: ['', [Validators.required, Validators.maxLength(300)]],
projectDescription: ['', [Validators.required, Validators.maxLength(300)]],
funding: this.formBuilder.array([this._buildFundingItems()]),
});
elthis._buildFundingItems()
es como sigu
private _buildFundingItems(): FormGroup {
return this.formBuilder.group({
items: ['', [Validators.required, Validators.pattern(this.regexValidation.shortWordRegex)]],,
amount: ['', [Validators.required, Validators.pattern(this.regexValidation.amountTypeRegex)]],
});
}
// after reloading the page, i get data from api and I tried setting the value as follows
this.form.setControl('funding', this.formBuilder.array(data.funding || []));
hacer lo anterior othis.form.setControl('funding', this.formBuilder.array(data.funding || []));
obtengo un error:Cannot find control with path: 'funding -> 0 -> amount'
yCannot find control with path: 'funding -> 0 -> items'
.
Antes de hacer lo siguiente a continuación, no recibía ningún error, pero al actualizar el formulario o (en los cambios de valor), el formularioray no se estaba actualizando.
let length: number = data[0].funding.length;
while (length-- > 0) {
fundingSupport.push(this._buildFundingItems());
}
this.form.controls['funding'] = this.formBuilder.array([]);
this.form.controls['funding'].patchValue(data.funding)
Vi el siguiente enlaceAngular 4 patchValue basado en el índice en FormArray por eso probé el primer enfoque.