以下是一个示例代码,演示了如何使用Angular动态嵌套数组的反应式表单来检测变化:
HTML模板:
组件代码:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.myForm = this.formBuilder.group({
items: this.formBuilder.array([])
});
}
get items() {
return this.myForm.get('items') as FormArray;
}
addItem() {
const itemFormGroup = this.formBuilder.group({
name: ''
});
this.items.push(itemFormGroup);
}
onSubmit() {
console.log(this.myForm.value);
}
onItemBlur(index: number) {
const itemForm = this.items.controls[index];
console.log('Item changed:', itemForm.value);
}
}
在上面的示例中,我们首先创建了一个反应式表单myForm
,其中包含一个items
的表单数组。在HTML模板中,我们使用*ngFor
指令遍历items
数组,并为每个数组元素创建一个表单控件。
在onItemBlur
方法中,我们通过索引获取特定的表单控件,并打印出其值。您可以根据具体需求,执行其他操作,如发送请求或更新其他相关数据。
在组件的ngOnInit
方法中,我们初始化表单并创建了一个空的items
数组。我们还提供了一个addItem
方法,用于动态添加新的数组元素。