我正在推导一种用于验证范围的自定义验证方法,如下所示:
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对象的情况下重构我的函数调用?
答案 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