【问题标题】:Unable to push to array ionic无法推送到离子阵列
【发布时间】:2019-02-15 23:26:44
【问题描述】:

我是 ionic 新手。

我想将数据推送到我的 myForm 数组,但它显示错误 Cannot read property 'push' of undefined

这是我的表格:

public myForm: FormGroup;

constructor(){
     this.myForm = this._fb.group({

       docs: this._fb.array([
        this._fb.group({

          docName: [''],
          ref_array: this._fb.array([
            this._fb.group({
              refTextBox: []
            })
          ])

        }),
      ]),
     })

}

我想将元素推送到ref_array

这是我的代码:

    const control2 = <FormArray>this.myForm.controls['docs']
    const control3 = <FormArray>control2.controls['ref_array']

    control3.push(
      this._fb.group({
        refTextBox: []
      })
    )

我在哪里犯错了? 请提前帮助和感谢!

【问题讨论】:

  • 这意味着 control3 未定义。您可以记录 control3 并将输出粘贴到此处吗?
  • 是的,它显示,control3 is undefined 现在我如何获得价值ref_array

标签: angular ionic-framework ionic2 ionic3


【解决方案1】:

使用_fb.array 代替普通数组[]

refTextBox: this._fb.array([])


let data = <FormArray>this.myForm.get('docs');
      let newdata = <FormArray>data.controls[0].get('ref_array');
      newdata.push(this._fb.group({
        refTextBox: []
      }))

【讨论】:

  • 在构造函数上添加_fb.array 后显示一些不同的错误
【解决方案2】:

您必须维护 formArray 的索引:

参考例子--->DEMO

请参考Demo,它将帮助您理解表单数组

 add(index){
    const control =  <FormArray>this.myForm.get('docs')['controls'][index].get('ref_array');
    control.push(
      this._fb.group({
        refTextBox: []
      })
    )
    }

【讨论】:

    【解决方案3】:

    可能control2.controls['ref_array'] 返回 null。

    添加if条件

      if(control3 && control3.length >= 0){
       control3.push(
          this._fb.group({
            refTextBox: []
          })
        )
      }
    

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2019-07-02
      • 2017-01-25
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2016-07-05
      • 2018-09-10
      相关资源
      最近更新 更多