首页 > 解决方案 > 注意 formControlNames 的更改以及如何知道 formGroup for 循环中的哪一行更改 - 反应式表单

问题描述

想查看 formGroup for 循环中 formControlNames 的更改,但是我如何知道更改已进行的 for 循环的哪个索引。例如,如果我想查看“ruleType”的 formcontrolname 的更改,valueChanges 不会提供触发更改的特定行的信息。

我尝试订阅 formGroup.value 更改(stackblitz 的 app.component.ts 的第 52-58 行),但它不起作用。我必须评论它并使用(stackblitz 的 app.component.ts 的第 46-49 行)for 循环来循环遍历 formArray,但它似乎也无法检测到 formControlName 的变化。如果您有任何想法,将不胜感激。

想要修改特定行的特定 formgroupname(formArray 的特定索引)。

我的代码库位于: https ://stackblitz.com/edit/angular-eazn5i?file=src%2Fapp%2Fapp.component.html

标签: angularangular-reactive-formsform-controlformgroupsngonchanges

解决方案


因为您的 StackBlitz 有控制台错误,所以我构建了一个更简化的版本来满足您的StackBlitz需求。

为了能够访问具有值更改事件的当前表单控件,我使用了闭包:

for (let formGroup of this.myFormGroups) {
  formGroup.get("firstName").valueChanges.subscribe(control => {
    console.log(formGroup);        
  });
}

现在您可以通过导航到formGroup.controls.


推荐阅读