繁体   English   中英

在 Angular 中设置模板以匹配反应形式的 formArray 值

[英]Setting up template in Angular to match formArray values in a reactive form

我正在尝试在 angular 中制作一个反应形式,它的格式是我的 API。 我知道我可以在事后进行一些数据转换以获得我需要的东西,但我想知道我是否可以这样设置表格。

它简化了一点,但是这段代码让我得到了我正在寻找的确切格式。

myForm = this.fb.group({
  fieldOne: [''],
  fieldGroup: this.fb.array([
    this.fb.group({
      groupId: [1],
      myValue: []
    }),
    this.fb.group({
      groupId: [2],
      myValue: []
    }),
    this.fb.group({
      groupId: [3],
      myValue: []
    })
  ])
});

我的问题是如何在模板中设置此表单,以便为 fieldGroup 中的每个项目设置 myValue?

https://stackblitz.com/edit/angular-ivy-gv4zd6?file=src/app/app.component.html

我不完全确定,但我认为您的表单组需要一个名称:

myForm = this.fb.group({
  fieldOne: [''],
  fieldGroup: this.fb.array([
    name1: this.fb.group({
      groupId: [1],
      myValue: []
    }),
    name2: this.fb.group({
      groupId: [2],
      myValue: []
    }),
    name3: this.fb.group({
      groupId: [3],
      myValue: []
    })
  ])
});

示例 html:

<form novalidate
          (ngSubmit)="saveProduct()"
          [formGroup]="myForm">
    <div class="form-group row mb-2">
        <label class="col-md-2 col-form-label"
               for="fieldOneId">fieldOne</label>
        <div class="col-md-8">
          <input class="form-control"
                 id="fieldOneId"
                 type="text"
                 formControlName="fieldOne"/>
        </div>
    </div>
    <div formArrayName="tags">
        <div formGroupName="name1">
            <div class="form-group row mb-2">
                <label class="col-md-2 col-form-label"
                   for="groupIdId">groupId</label>
                <div class="col-md-8">
                    <input class="form-control"
                         id="groupIdId"
                         type="number"
                         formControlName="groupId"/>
                </div>
                <!-- Repeat -->
            </div>
            <!-- Repeat -->
        </div>
    </div>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM