我具有在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: ''
});
}
}
请注意,listaatributos
必须是一个数组。
我尝试添加一个将数据推送到此listaatributos数组中的函数:
adicionaAtributo(index: number) {
this.variacaoForm.value.variacoes[index].listaatributos.push(this.idAtributo);
}
但是我有这个消息:
错误TypeError:无法读取未定义的属性'listaatributos'
我的想法是,我有一个反应形式,必须是各种variacoes
,并且在variacoes
内必须是设置为数组的listaatributos
。
类似的东西:
variações: [{"estoque_variacao": 900, "atributos":[12,13]}]
这是我的variaçãoForm
的树形圆顶:
答案 0 :(得分:1)
使用this.variacaoForm.controls
代替this.variacaoForm.value
:
adicionaAtributo(index: number) {
(<FormGroup>(<FormArray>this.variacaoForm.controls['variacoes']).controls[index]).controls['listaatributos'].push(this.idAtributo);
}
此致
答案 1 :(得分:0)
对我有用的东西
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});