Reputation: 768
I have this function that create my formgroup in my ngOnInit:
ngOnInit() {
//When start component create my form group
this.variacaoForm = this.fb.group({
variacoes: this.fb.array([this.createFormGroup()])
});
createFormGroup(): FormGroup {
return this.fb.group({
atributo: "",
preco: null,
listaatributos: [],
sku: '',
tipo: '',
id: '',
id_produto: '',
estoque_variacao: 0,
linkfotovariacao: '',
created_at: '',
foto_prin_1: '',
foto_prin_2: '',
foto_prin_3: '',
foto_prin_4: '',
foto_prin_5: '',
foto_prin_6: ''
});
}
}
Note that listaatributos
must be an array.
I try add one function that push data in this listaatributos array:
adicionaAtributo(index: number) {
this.variacaoForm.value.variacoes[index].listaatributos.push(this.idAtributo);
}
But i have this message:
ERROR TypeError: Cannot read property 'listaatributos' of undefined
My idea is that i have a reactive form that must be various variacoes
and inside the variacoes
must be a listaatributos
set as array.
Something like:
variações: [{"estoque_variacao": 900, "atributos":[12,13]}]
This is the tree dom of my variaçãoForm
:
Upvotes: 0
Views: 45
Reputation: 768
What worked for me:
adicionaAtributo(index: number){ //Adiciona atributo no form group
this.listAtributos.push({id:this.idAtributo, tipovariacao: this.variacaoForm.value.variacoes[index].tipo, valorvariacao: this.variacaoForm.value.variacoes[index].atributo})
const control = (<FormArray>this.variacaoForm.controls['variacoes']).at(index);
control.patchValue({listaatributos: this.listAtributos});
Upvotes: 0
Reputation: 3297
Use this.variacaoForm.controls
instead of this.variacaoForm.value
:
adicionaAtributo(index: number) {
(<FormGroup>(<FormArray>this.variacaoForm.controls['variacoes']).controls[index]).controls['listaatributos'].push(this.idAtributo);
}
Regards,
Upvotes: 1