验证动态填充的Angular FormArrays

时间:2019-05-01 17:22:35

标签: angular

我有一个带有两个选择(下拉列表)的反应性Angular形式。当两个选择都具有值时,将动态创建一组用于捕获属性数据的控件,并将其添加到FormArray中。更改选择后,将填充FormArray,并动态创建一组新的属性控件。当所有属性控件均有效时,我需要显示与所选属性匹配的数据。

我正在订阅statusChanges事件以检测属性控件何时有效。这是可行的,除非要修改FormArray,因为从FormArray中删除所有控件后,它都处于有效状态。如果在填充时,FormArray中的其余控件处于有效状态,也会发生这种情况。我要解决的方法是添加一个在修改FormArray时始终返回false的验证器,然后将其删除。有没有更好的方法?基本上,我想在构建表单时暂停验证。

我预期的解决方法是,我可能想向FormArray添加真正的验证器,最终将被clearValidators()删除。

export function alwaysFalse(control: AbstractControl) {
    return { valid: false};
}

this.variantAttributes.setValidators(alwaysFalse);
while (this.variantAttributes.length !== 0) {
  this.variantAttributes.removeAt(0);
}
this.variantAttributes.clearValidators();

0 个答案:

没有答案