实现思路
- 创建响应式表单:在组件中使用
FormGroup
和FormControl
创建初始表单。
- 动态添加控件:为按钮添加点击事件处理函数,在函数中使用
formGroup.addControl
方法添加新的FormControl
,并设置验证规则。
- 动态移除控件:在按钮点击事件处理函数中,当需要移除控件时,使用
formGroup.removeControl
方法移除指定的控件。
主要代码示例
- 组件类(.ts 文件)
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
@Component({
selector: 'app-dynamic-form',
templateUrl: './dynamic-form.component.html',
styleUrls: ['./dynamic-form.component.css']
})
export class DynamicFormComponent {
myForm: FormGroup;
controlName = 'dynamicControl';
constructor() {
this.myForm = new FormGroup({
// 初始表单控件示例
existingControl: new FormControl('')
});
}
toggleDynamicControl() {
if (this.myForm.contains(this.controlName)) {
this.myForm.removeControl(this.controlName);
} else {
this.myForm.addControl(this.controlName, new FormControl('', Validators.minLength(5)));
}
}
}
- 模板(.html 文件)
<form [formGroup]="myForm">
<input formControlName="existingControl" placeholder="Existing Control">
<button (click)="toggleDynamicControl()">Toggle Dynamic Control</button>
<input *ngIf="myForm.contains(controlName)" formControlName="dynamicControl" placeholder="Dynamic Control">
</form>