Angular 如何在formgroup中定义数组并推送数据?
我有一个在ngOnInit中创建formgroup的函数:Angular 如何在formgroup中定义数组并推送数据?,angular,typescript,Angular,Typescript,我有一个在ngOnInit中创建formgroup的函数: ngOnInit() { //When start component create my form group this.variacaoForm = this.fb.group({ variacoes: this.fb.array([this.createFormGroup()]) }); createFormGroup(): FormGroup { return this.f
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: ''
});
}
}
请注意,listaAttributeTos
必须是一个数组
我尝试添加一个函数来推送此ListaAttributes数组中的数据:
adicionaAtributo(index: number) {
this.variacaoForm.value.variacoes[index].listaatributos.push(this.idAtributo);
}
但我有一个信息:
错误类型错误:无法读取未定义的属性“ListaAttributes”
我的想法是,我有一个反应式表单,它必须是各种variacoes
,在variacoes
中必须是一个listaAttributes
设置为数组
比如:
variações: [{"estoque_variacao": 900, "atributos":[12,13]}]
这是我的variaçãoForm
的树dom:
使用
此.variacaform.controls
而不是此.variacaform.value
:
adicionaAtributo(index: number) {
(<FormGroup>(<FormArray>this.variacaoForm.controls['variacoes']).controls[index]).controls['listaatributos'].push(this.idAtributo);
}
adicionaAtributo(索引:编号){
((this.variacaform.controls['variacoes'])).controls[index]).controls['listaAttributes'].push(this.IDAttributeto);
}
关于对我有用的东西:
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});
adicionaAtributo(索引:number){//adicionaAtributo无形态群
this.listAtributos.push({id:this.idAtributo,tipovariacao:this.variacaform.value.variacoes[index].tipo,valorvariacao:this.variacaform.value.variacoes[index].atributo})
const control=(this.variacaform.controls['variacoes'])at(index);
patchValue({listaAttributes:this.listAtributos});
After['variacoes'].>controlsFormArray的转换)
已经尝试过:this.variacaForm.controls['variacoes']['controls'][index].listaAttributeTos.push(this.idAtributo)但现在我无法读取未定义的属性“ListaAttributeTos”,听了你的建议:(this.VariacoForm.controls['variacoes']['controls'][index].ListaAttributeTos.push(this.IDAttributeTo)),但现在我必须拥有:无法读取未定义的属性“ListaAttributeTos”:如果我恰好在你这样做时尝试:“(this.VariacoForm.controls['variacoes]”).controls[index].ListaAttributeTos.push(this.IDAttributeTo);“i receive:类型'AbstractControl'上不存在属性'ListaAttributeTos'。