核心提示:Angular FormArray 的用法要注意的几点:FormArray 需要在FormGroup 内部.this.groupForm = this.fb.group({Arr: this.fb.a...
Angular FormArray 的用法
要注意的几点:
FormArray 需要在FormGroup 内部.
this.groupForm = this.fb.group({
Arr: this.fb.array([]) // formarray
});
定义一个formgroup, 存放你需要做循环的form. 也便于后面的添加删除表单序列.
// formarray表单
this.groupForm = this.fb.group({
Arr: this.fb.array([this.createForm()]) // formarray
});
private createForm() {
return this.fb.group({
control1: ['', Validators.required],
control2: ['', Validators.required],
Name: ['', Validators.required],
Code: ['', Validators.required],
Level: ['', Validators.required],
Remark: [''],
});
}
添加和移除表单
// 增加表单
newForm() {
const arr = this.groupForm.get('Arr') as FormArray;
arr.push(this.createForm()); // 推送form新表单
}
// 移除表单
removeForm(i: number) {
const arr = this.groupForm.get('Arr') as FormArray;
arr.removeAt(i); // 根据索引移除对应的表单
}
前台展示方法.
<form [formGroup]="groupForm" id="detail" class="am-g">
<p formArrayName="Arr">
<p *ngFor="let form of ArrForm.controls; let i=index;" [formGroupName]="i">
<input type="text" formControlName="Name">
...............
<!-- 增加移除表单 -->
<button (click)="newForm()">增加表单</button>
<button (click)="removeForm(i)">增加表单</button>
</p>
问题:
另外, 我还有个问题没有搞明白, 为什么前台页面 formArrayName里面 必须要加上 [formGroupName]=”i”. 不然就会报错.


