自定义的验证formArray控制(Custom validator formArray contr

2019-10-28 08:21发布

我有一个formGroup,这formGroup的控制是formArrays,

我的计划是在循环遍历formGroup.formArrays的价值和检查,看看是否有任何值都设置为true,如果是的话一切正常。

但正在发生的事情是, 它总是无效

 static validate (control: AbstractControl): { [key: string]: boolean } | null  {
    let isChecked = false;
    const tempArray = [];
      for ( let i = 0; i < control.value.length; i++ ) {
      const val = control.value[i];
      tempArray.push(val);
      }
   isChecked = tempArray.find( el => el === true );
   if ( isChecked ) {
    return null;
    }
    return  {
      'isNotChecked' : true
    };
  }

Answer 1:

因为你的回报周围的错误的方式..即如果无效返回null。

如果你是按照文档的英雄。 有双重否定..

** A hero's name can't match the given regular expression */
export function forbiddenNameValidator(nameRe: RegExp): ValidatorFn {
  return (control: AbstractControl): {[key: string]: any} | null => {
    const forbidden = nameRe.test(control.value);
    return forbidden ? {'forbiddenName': {value: control.value}} : null;
  };
}

禁止 - 因为它无法比拟的正则表达式。

(正则表达式测试将用于匹配返回true)

下面是我的一个例子:

export function min(min: Number): ValidatorFn {
    return (control: AbstractControl): {[key: string]: any} => {
      const input = control.value,
      isValid = input < min;
      if(isValid) 
          return { 'minValue': {min} }
      else 
          return null;
    };
}

让我知道,如果这有助于。



文章来源: Custom validator formArray controls