在Angular中动态添加表单元素和获取数据可以通过以下步骤实现:
formGroup
、formControlName
)来建立表单控件和绑定数据。FormBuilder
来创建表单控件。可以使用group
方法来创建一个表单控件组,并使用control
方法来创建单个表单控件。可以根据需要设置表单控件的验证规则。FormArray
来动态添加表单元素。FormArray
是一个可变长度的表单控件数组,可以通过push
方法向其中添加新的表单控件。valueChanges
方法来监听表单值的变化,并在回调函数中获取最新的表单数据。下面是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
@Component({
selector: 'app-my-form',
templateUrl: './my-form.component.html',
styleUrls: ['./my-form.component.css']
})
export class MyFormComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.myForm = this.formBuilder.group({
formArray: this.formBuilder.array([])
});
}
get formArray() {
return this.myForm.get('formArray') as FormArray;
}
addFormControl() {
const formControl = this.formBuilder.control('');
this.formArray.push(formControl);
}
onSubmit() {
console.log(this.myForm.value);
}
}
在上述代码中,myForm
是一个包含一个formArray
的表单组。addFormControl
方法用于动态添加表单控件到formArray
中。onSubmit
方法用于获取表单数据并打印到控制台。
在组件的HTML模板中,可以使用*ngFor
指令来遍历formArray
中的表单控件,并使用formControlName
指令来绑定表单控件的值。
<form [formGroup]="myForm" (ngSubmit)="onSubmit()">
<div formArrayName="formArray">
<div *ngFor="let control of formArray.controls; let i = index">
<input type="text" [formControlName]="i">
</div>
</div>
<button type="button" (click)="addFormControl()">Add Control</button>
<button type="submit">Submit</button>
</form>
这样,就可以在Angular中动态添加表单元素并获取数据了。
领取专属 10元无门槛券
手把手带您无忧上云