从未订阅异步验证器 (AsyncValidatorFn)
async validator (AsyncValidatorFn) is never subscribed to
我写了一个自定义表单验证器,但在 errors
它只有 "_isScalar": false, "source": { "_isScalar": false, "source": { "_isScalar": false, "source": {"_isScalar": false}, "operator": {}}, "operator": {"total": 1}
并且表单永远无效。
这是我的验证器:
export function asyncEmailValidator(): AsyncValidatorFn {
return (control: AbstractControl): Observable<ValidationErrors | null> => {
return of(control.value).pipe(
map(res => {
return res && res.indexOf('example.de') < -1 ? { eMailUnavailable: true } : null;
}),
take(1), finalize(() => {})
);
};
}
我是这样使用它的:
emailFormControl = new FormControl('', [
Validators.required,
Validators.email,
asyncEmailValidator()
]);
通过调试,我发现从未到达我检查 example.de 的地图块,我不明白为什么。在显示内部 return 之前使用并输出函数本身。
我在网上的多个示例中看到了这种结构,但它似乎对我不起作用。
我正在使用 @angular/forms
10.0.14
异步验证器应指定为第三个参数,如下所示:
new FormControl('', [Validators.required, Validators.email], [asyncEmailValidator()]);
我写了一个自定义表单验证器,但在 errors
它只有 "_isScalar": false, "source": { "_isScalar": false, "source": { "_isScalar": false, "source": {"_isScalar": false}, "operator": {}}, "operator": {"total": 1}
并且表单永远无效。
这是我的验证器:
export function asyncEmailValidator(): AsyncValidatorFn {
return (control: AbstractControl): Observable<ValidationErrors | null> => {
return of(control.value).pipe(
map(res => {
return res && res.indexOf('example.de') < -1 ? { eMailUnavailable: true } : null;
}),
take(1), finalize(() => {})
);
};
}
我是这样使用它的:
emailFormControl = new FormControl('', [
Validators.required,
Validators.email,
asyncEmailValidator()
]);
通过调试,我发现从未到达我检查 example.de 的地图块,我不明白为什么。在显示内部 return 之前使用并输出函数本身。
我在网上的多个示例中看到了这种结构,但它似乎对我不起作用。
我正在使用 @angular/forms
10.0.14
异步验证器应指定为第三个参数,如下所示:
new FormControl('', [Validators.required, Validators.email], [asyncEmailValidator()]);