首页 > 解决方案 > 如何查找用户更改了 FormArray 中的哪个 FormGroup?

问题描述

我有一个带有 FormArray 的反应形式。

@Component({...})
export class MyComponent implements OnInit {
    @Input()
    items: Item[]

    itemsFormArray = new FormArray([]);
    form = new FormGroup({
      items: this.itemsFormArray
    });

    ngOnInit() {
        this.items.forEach(item => this.addRow(item));    
    }
    addItem(item: Item) {
        const doorFormGroup = new FormGroup({
            width: new FormControl(item.width),
            height: new FormControl(item.height),
        });
        this.itemsFormArray.push(doorFormGroup);
    }
}

我想通过观察值的变化来向服务器提交更改。我可以订阅valueChanges表单本身或 itemsFormArray,我会收到每个项目的整个数据数组的通知。

我如何知道用户更改了哪个 Item 或哪个 FormGroup 实例itemsFormArray

我知道我可以订阅 中的每个 FormGroup itemsFormArray,但在我看来这不是一个好的解决方案。有没有更有效的方法来知道数组中的哪个项目发生了确切的更改,并仅针对更改的项目提交更改?

标签: angularangular-reactive-forms

解决方案


推荐阅读