在Angular中动态地添加/删除子表单组件可以通过使用FormArray来实现。下面是一个示例:
首先,创建一个父表单组件,并在其中创建一个FormArray来存储子表单组件。在父组件的模板中,使用ngFor指令迭代FormArray中的表单控件,并显示子表单组件。
父组件的模板:
在父组件的代码中,需要创建和初始化对应的FormArray,并提供用于添加/删除子表单的方法。
父组件的代码:
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, FormArray } from '@angular/forms';
@Component({
selector: 'app-parent-form',
templateUrl: './parent-form.component.html',
styleUrls: ['./parent-form.component.css']
})
export class ParentFormComponent implements OnInit {
parentForm: FormGroup;
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.parentForm = this.fb.group({
childForms: this.fb.array([])
});
}
get childControls() {
return (this.parentForm.get('childForms') as FormArray).controls;
}
addChildForm() {
const childForm = this.fb.group({
// Add your child form fields here
});
(this.parentForm.get('childForms') as FormArray).push(childForm);
}
removeChildForm(index: number) {
(this.parentForm.get('childForms') as FormArray).removeAt(index);
}
}
在上面的示例中,addChildForm()
方法通过向FormArray中添加一个新的FormGroup来动态添加子表单。removeChildForm()
方法通过指定索引号来从FormArray中移除指定的子表单。
最后,创建一个子表单组件,该组件可以用于动态添加到父表单组件中。子表单组件的模板和代码可以根据具体需求进行自定义。
子组件的模板:
子组件的代码:
import { Component, Input } from '@angular/core';
import { FormGroup } from '@angular/forms';
@Component({
selector: 'app-child-form',
templateUrl: './child-form.component.html',
styleUrls: ['./child-form.component.css']
})
export class ChildFormComponent {
@Input() form: FormGroup;
}
以上就是使用FormArray来动态添加/删除子表单组件的示例代码。通过在父组件中迭代FormArray并使用相应的方法添加/删除子表单,可以实现动态表单的需求。