在Angular 6中,可以使用FormArray来处理表单中的动态字段集合。下面是一个示例,展示了如何使用FormArray和HTML循环来实现动态字段的添加和删除。
首先,在组件的模板中,定义一个FormArray,并使用ngFor指令来循环显示FormArray中的字段:
接下来,在组件的代码中,需要初始化FormArray,并提供添加和删除字段的方法:
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 fb: FormBuilder) { }
ngOnInit() {
this.myForm = this.fb.group({
items: this.fb.array([])
});
}
get items() {
return this.myForm.get('items') as FormArray;
}
addItem() {
this.items.push(this.fb.control(''));
}
removeItem(index: number) {
this.items.removeAt(index);
}
}
在上面的代码中,我们首先使用FormBuilder创建了一个空的FormGroup,并在其中添加了一个空的FormArray。然后,我们定义了两个方法addItem()和removeItem(),用于向FormArray中添加和删除字段。
注意,由于items是一个FormArray类型,我们需要通过将其转换为FormArray类型来获取其控制器。
最后,确保在模块中导入并将FormsModule和ReactiveFormsModule添加到imports数组中:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { MyFormComponent } from './my-form.component';
@NgModule({
imports: [BrowserModule, FormsModule, ReactiveFormsModule],
declarations: [AppComponent, MyFormComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
这样,你就可以在Angular 6中使用FormArray和HTML循环来处理动态字段集合了。