向FormArray添加验证不会触发

时间:2019-09-02 17:08:12

标签: angular angular-reactive-forms

我以这种方式创建了验证器:

static repeatedPerson(): ValidatorFn {
return (array: FormArray) => {
  if (array && array.length > 0) {
    // I do some logic here
    if (//AnyCondition) {
      return {RepeatedPerson: true};
    }
  }

  return {};
};

}

然后将验证器添加到formArray:

    this.persons.setValidators(repeatedPersonNumber());

我尝试了其他方式,例如人:

new FormArray([], repeatedPersonNumber())
new FormArray([], repeatedPersonNumber)
this.persons.setValidators(repeatedPersonNumber);

我将断点放入了repeaterPerson验证器中,只调用了一次即可返回该函数。但是验证本身永远不会触发...

有什么想法吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

对于语句this.persons.setValidators(repeatedPersonNumber),您需要调用updateValueAndValidity()才能使新的验证生效。

检查是否可行。如果不是这样,则需要提供HTML代码和Submit函数代码段以了解问题的根源。