首页 > 解决方案 > Angular:FormArray 中的 FormControl 未触发验证功能

问题描述

想象一下FormGroupAngular中的以下内容:

this.form = new FormGroup({
  name: new FormControl(''),
  age: new FormControl(),
  hobbies: new FormArray([])
}, {
  validators: [this.validateForm.bind(this)]
});

我后来在FormArray使用中添加了爱好:

this.form.controls.hobbies.controls.push(new FormControl(/* hobby */));

当我更改nameage控件中的值时,该validateForm功能触发良好。但是,当我单击其中任何一个时hobbies,都不会调用上述验证方法。

标签: angularforms

解决方案


我认为因为您需要使用 formGroup 来填充 formArray,例如:

  form = new FormGroup({
    name: new FormControl(''),
    skills: new FormArray([
      new FormGroup({
        name: new FormControl(''),
        level: new FormControl('')
      })
    ])
  });

你可以在这里找到一些很好的解释:

https://netbasal.com/angular-reactive-forms-the-ultimate-guide-to-formarray-3adbe6b0b61a


推荐阅读