Why should I use Validators.compose()?

前端 未结 2 528
情歌与酒
情歌与酒 2020-12-14 06:51

I have a field I want to validate with multiple validators.
Using the Module Driven approach the code looks likes this:

this.exampleForm = this.fb.group(         


        
2条回答
  •  -上瘾入骨i
    2020-12-14 07:35

    When we create new FormControl/FormGroup/FormArray(AbstractControl) - coerceToValidator is called.

    function coerceToValidator(
        validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null): ValidatorFn|
        null {
      const validator =
          (isOptionsObj(validatorOrOpts) ? (validatorOrOpts as AbstractControlOptions).validators :
                                           validatorOrOpts) as ValidatorFn |
          ValidatorFn[] | null;
    
      return Array.isArray(validator) ? composeValidators(validator) : validator || null;
    }
    
    export function composeValidators(validators: Array): ValidatorFn|null {
      return validators != null ? Validators.compose(validators.map(normalizeValidator)) : null;
    }
    

    So there is no need to compose validators before we pass it to an AbstractControl.

    6/13/16 was added feat(forms): compose validator fns automatically if arrays from now on, Validators.compose is there for backward compatibility.

提交回复
热议问题