Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在formgroup中定义数组并推送数据?_Angular_Typescript - Fatal编程技术网

Angular 如何在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中创建formgroup的函数:

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'。