javascript - 如何将带有表单控件的表单组动态添加到表单组
问题描述
我有一个非常大的表单,其中包含许多复选框、收音机、文本区域......整个表单是从数据库动态生成的。
在某些时候,我需要验证一组复选框,其中必须检查该复选框组的至少一个复选框。所以我遵循了这本手册:https ://stackoverflow.com/a/54036689/11937089
我的问题是,表单组内的表单组必须是动态生成的。
我试过这样的事情:
this.outerForm.addControl('checkboxGroup' + (foo.id + ' ')), new FormGroup({}));
foo.forEach(bar => { get('checkboxGroup' + (foo.id + ' ')).addControl('checkbox'+ (foo.id + ' ') + (bar.id + ' ')), new FormControl(' ')); }
但我很确定这是完全错误的,因为 addControl 不适用于表单组,而且我不知道如何在 addControl-Part 中引用动态 FormGroup checkboxGroup1,这get
似乎是错误的。
outerform
--> textarea
--> checkboxGroup1
----->checkbox11
----->checkbox12
----->checkbox13
----->checkbox14
--> textarea
--> textarea
--> checkboxGroup2
----->checkbox21
----->checkbox22
----->checkbox23
----->checkbox24
解决方案
使用formArray https://stackblitz.com/edit/angular-form-array-example尝试这样的事情
import { Component } from '@angular/core';
import { FormControl, FormGroup, FormArray, FormBuilder } from '@angular/forms';
@Component({
selector: 'my-app',
template: `
<form [formGroup]="form">
<input type="checkbox" formControlName="published"> Published
<div *ngIf="form.controls.published.value">
<h2>Credentials</h2>
<button (click)="addCreds()">Add</button>
<div formArrayName="credentials" *ngFor="let creds of form.controls.credentials?.value; let i = index">
<ng-container [formGroupName]="i">
<input placeholder="Username" formControlName="username">
<input placeholder="Password" formControlName="password">
</ng-container>
</div>
</div>
</form>
`,
})
export class AppComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
published: true,
credentials: this.fb.array([]),
});
}
addCreds() {
const creds = this.form.controls.credentials as FormArray;
creds.push(this.fb.group({
username: '',
password: '',
}));
}
}
推荐阅读
- prolog - 我无法进入第二个递归调用 Prolog
- excel - VBA XIRR 函数数据类型与动态数组不匹配
- javascript - 如何使用 supertest 附加文件并将 JSON 数据发送到请求正文?
- codeigniter - 如何将数据传递给引导模式?
- database - 在 MS Access 中从一个表减去另一个表
- java - 从表 JavaFX 打开文件
- java - Java @requestBody 不起作用,dto 为空
- reporting-services - SSRS - 报表生成器:使用工具提示在柱形图中显示组中的项目
- java - 如何将 docx base64 编码流转换为 PDFA base64 编码流
- ag-grid - Ag Grid 将自定义标题组件向右对齐