Reactive Forms 是 Angular 中用于处理表单的一种方式,它提供了一种模型驱动的方式来处理表单输入。FormGroup
和 FormArray
是 Reactive Forms 中的两个核心概念:
Reactive Forms 适用于需要复杂表单逻辑的应用,如动态表单、嵌套表单、表单验证等。
假设你已经有一个现有的 FormGroup
,并且你想在稍后的时间点添加一个新的 FormGroup
或 FormArray
。以下是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, FormArray, FormBuilder } from '@angular/forms';
@Component({
selector: 'app-dynamic-form',
templateUrl: './dynamic-form.component.html',
styleUrls: ['./dynamic-form.component.css']
})
export class DynamicFormComponent implements OnInit {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
existingGroup: this.fb.group({
control1: [''],
control2: ['']
}),
formArray: this.fb.array([])
});
}
ngOnInit(): void {
// 模拟在稍后的时间点添加新的 FormGroup
setTimeout(() => {
const newFormGroup = this.fb.group({
newControl1: [''],
newControl2: ['']
});
this.form.addControl('newGroup', newFormGroup);
}, 2000);
// 模拟在稍后的时间点添加新的 FormArray
setTimeout(() => {
const newFormArray = this.fb.array([
this.fb.control(''),
this.fb.control('')
]);
this.form.setControl('newFormArray', newFormArray);
}, 4000);
}
}
FormBuilder
创建一个包含现有 FormGroup
和 FormArray
的 FormGroup
。setTimeout
模拟在稍后的时间点添加一个新的 FormGroup
。通过 form.addControl
方法将新的 FormGroup
添加到现有的 FormGroup
中。setTimeout
模拟在稍后的时间点添加一个新的 FormArray
。通过 form.setControl
方法将新的 FormArray
替换现有的 FormArray
。通过这种方式,你可以在 Angular 7/8/9 中的稍后时间点动态地添加新的 FormGroup
或 FormArray
到现有的 FormGroup
中。
领取专属 10元无门槛券
手把手带您无忧上云