自定义验证需要承诺

时间:2018-01-12 13:32:08

标签: angular custom-validators

我正在推导一种用于验证范围的自定义验证方法,如下所示:

static ratingRange=(min:number,max:number) =>
  {
     return (control:AbstractControl):Promise<ValidationErrors|null>=>
     {
          return new Promise(resolve=>
           {
             if (control.value !== undefined && (isNaN(control.value) 
            || control.value < min || control.value > max))
                              return resolve({InvalidRange:true});
             else return resolve(null);    
           }
          );
      }

正在按预期执行验证,没有任何问题。

但是出于测试目的,我想使用ValidatorFn工厂重写验证方法,如下所示。( 意图不是返回承诺对象) < / p>

static CustomRangeValidator (min:number,max:number): ValidatorFn
  {
     return (control:AbstractControl):{[key:string]:boolean}=>
     {
        if (control.value !== undefined && (isNaN(control.value) 
           || control.value < min || control.value > max))
                       return {InvalidRange:true}
        else return null;   
     }
  }

但我得到了

  

'预期验证者返回Promise或Observable。'

有没有办法在不返回Promise对象的情况下重构我的函数调用?

1 个答案:

答案 0 :(得分:1)

我的解决方案

this.myForm = new FormGroup({
    'controlName': new FormControl(value, 
               [/* this array for validation functions which will not return promises */], 
               [/*this array for function which returns promises*/])
})

/// in your case but your function in the first array