【问题标题】:How to add dynamically generated form group to dynamically generated table rows in Angular?如何将动态生成的表单组添加到Angular中动态生成的表行?
【发布时间】:2020-11-21 20:42:19
【问题描述】:

我有一个 Angular 应用程序,它有一个动态生成的调查表,其中包含 X 个用户必须回答问题的主题。使这变得棘手的是行对应于问题,列对应于答案(这是我无法更改的任务),因此我无法将生成的行包装在完全处理的表单组中每个主题的答案。 HTML 看起来像:

  <tr *ngFor="let question of questions; index as i">
      <td class="question-column">{{ question }}</td>
      <td *ngFor="let name of networkNames">
        <app-value-dropdown
          [name]="name"
          [parent]="answers"
          [question]="question"
        ></app-value-dropdown>
      </td>
    </tr>

我得到的最远的方法是动态创建一个 FormGroups 的 FormArray,它对表格的结构进行建模,只要包含适当对应的表单控件,如下所示:

 buildForm() {
    const questions = Object.keys(this.questionFields);
    questions.forEach(question => {
      const group = new FormGroup({});
      this.networkNames.forEach(name => {
        group.addControl(
          `${name}__${question}`,
          new FormControl(0, Validators.required)
        );
      });
      this.answers.push(group);
    });
  }

我遇到的问题是在生成时将相应的 FormGroup 附加到每一行;我尝试利用表格行上的索引并将&lt;tr&gt; 的内部包装在一个表单中,其中 [formGroup] 在该迭代中设置为当前的 FormGroup,但这会导致行不呈现。如何调整此代码/方法以根据需要设置表单?

【问题讨论】:

  • 您能创建一个 stackblitz 示例吗?

标签: angular angular-reactive-forms


【解决方案1】:

我想多了:因为我有独特的 FormControls,所以我只需要一个 FormGroup 来处理它的页面。

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2020-03-21
    • 2014-09-14
    • 1970-01-01
    • 2018-04-22
    • 2012-11-15
    • 1970-01-01
    • 2016-08-29
    • 2012-04-09
    相关资源
    最近更新 更多