【问题标题】:"Cannot find control with path" but cannot figure out why - Angular 5“找不到路径控制”但无法弄清楚原因 - Angular 5
【发布时间】:2019-03-07 07:16:01
【问题描述】:

我正在尝试构建一个嵌套的反应式表单,但很挣扎。

我检查了this examplethis example 并提供了如下代码,但总是得到错误“找不到路径控制:'four_six_doc_multi_group -> document_txt_sub'”

谁能帮帮我?非常感谢!

我的表格:

let form = new FormGroup({
  sevenzerozeroInfoForm : this.formBuilder.group({
    pre_adv_ref : '',
    lc_currency :'',
    lc_amount :'',
    issue_date : '',
    four_six_doc_multi_group: this.formBuilder.array([this.create46DocMulti()])
  })
},
{updateOn: 'blur'}
)

create46DocMulti(){
  return this.formBuilder.group({
    document_code: '',
   document_txt_sub : this.formBuilder.array([this.formBuilder.control('')])
})}

我的 HTML:

<div [formGroup]="sevenzerozeroInfoForm">
  <div class="form-group" formArrayName="four_six_doc_multi_group">
          <div *ngFor="let doc of four_six_doc_multi_group.controls; let i=index">
              <div [formGroupName]="i">
                <div class="row">
                    <div class="col-md-3">
                        <div class="form-group">
                            <label class="control-label">46A Documents Required (Code).{{i+1}}</label>
                            <input type="text" class="form-control" formControlName="document_code">
                        </div>
                    </div>
                </div>
              </div>
              <div formArrayName="document_txt_sub" *ngFor="let document_txt of
                                            getDocument_txt(i).controls; let j=index">
                <div [formGroupName]="j" >
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="control-label">46A Documents Required.{{i+1}}.{{j+1}}</label>
                                <input type="text" class="form-control" formControlName="document_txt_sub">
                            </div>
                        </div>
                    </div>
                </div>
              </div>
          </div>
      </div>
    </div>

get four_six_doc_multi_group(){
    return this.sevenzerozeroInfoForm.get('four_six_doc_multi_group') as FormArray;
  }

  getDocument_txt(index){
    return ((<FormArray>this.sevenzerozeroInfoForm.get('four_six_doc_multi_group')).controls[index].get('document_txt_sub')) as FormArray;
  }

【问题讨论】:

    标签: angular nested-forms angular-reactive-forms


    【解决方案1】:

    你应该把这一行改成如下:

     document_txt_sub : this.formBuilder.array([this.formbuilder.group({
          document_txt_sub: ''
      }])
    

    因为在您的模板中您声明了[formGroupName]="j",但在您的表单数组中您只创建了一个控件,这就是这里的问题。您应该用表单组包装表单控件

    【讨论】:

    • 您好,非常感谢您的回复!我尝试更改该行,但仍然遇到相同的错误:找不到带有路径的控件:'four_six_doc_multi_group -> document_txt_sub'
    • 还有一个错误。 Bcz 你的 fromArrayName document_txt_sub div 应该在 formGroupName=i 里面。更改。这将解决您的问题
    • 非常感谢!是的!你拯救了我的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多