【问题标题】:Can't bind nested form group to form array in reactive Forms?无法将嵌套表单组绑定到反应表单中的表单数组?
【发布时间】:2020-04-11 03:39:03
【问题描述】:

https://stackblitz.com/edit/angular-reactive-forms-eg-s1v5zs?file=src/app/app.component.html

无法将 {form control} 绑定到数据 [ { “组1”:“”, “组2”:{ “数据”: ”” } } ]

需要使用表单控件名称进行绑定


 <form [formGroup]="formGroup">
    <div formArrayName="features">
        <div class="row no-gutters form-group" *ngFor="let feature of features.controls; let i = index; let last = last"
            [formGroupName]="i">
            Grp:1 <input
        type="text"
        class="form-control px-2 col"
        formControlName="group1"
        title="feature"
        >
            <!-- //How to bind  value of data in html??? -->
            <div [formGroup]="group2">
                <input type="text"
                class="form-control px-2 col"
                formControlName="group2"
                title="feature"
                >
            </div>
            <button class="col btn btn-success" (click)="addFeature()">
                +
                </button>
        </div>
    </div>
    <pre>
    {{ features.value|json}}
  </pre>
</form>

typeScript
  constructor(private fb: FormBuilder) {
    this.addFeature();
  }
  formGroup = this.fb.group({
    features: this.fb.array([])
  });
  get features(): FormArray {
    return this.formGroup.get("features") as FormArray;
  }
  addFeature(): void {
    let data = this.fb.group({
      group1: new FormControl("grp_1"),
      group2: this.fb.group({
        data: new FormControl("grp_2")
      })
    });
    this.features.push(data);
  }`enter code here`

【问题讨论】:

    标签: angular angular-reactive-forms


    【解决方案1】:

    您的文字&lt;input&gt; 上有formControlName="group2"。相反,您应该将group2 表单组的data 控件绑定到输入:formControlName="data"

    【讨论】:

    • 这是一个示例对象“group2”,实时:我在这个嵌套的表单组数据、名称、id 等下绑定了 n 个内部对象(“group2”)任何方式..?
    【解决方案2】:

    如果你想用对象数组创建嵌套表单,那么你应该使用 FormGrop。

    试试这个:

    addFeature(): void {
        let data = this.fb.group({
          group1: new FormControl("grp_1"),
          group2: this.fb.group({
            data: new FormControl("grp_2")
          }),
          group3: this.fb.array([
            this.fb.group({
              data: new FormControl("grp_3")
            })
          ])
        });
        this.features.push(data);
      }
    

    Forked Example

    【讨论】:

    • 是的,在 Form Array->Form Array->formControl 我们可以在 html 中绑定,但不能在 HTML 中绑定 Form Array(Features)->Form group(group2)->FormGroup(data)即formarray中的嵌套formgroup不能在html中绑定请帮忙??
    • 你能创建示例 stackblitz 吗?
    • 请点击此链接 ---> stackblitz.com/edit/…
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2019-02-01
    • 2015-01-16
    • 2018-07-29
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多