我试图在我的Reactive表单中实现异步验证器但是我收到错误请帮忙 .
Validator
import { AbstractControl } from '@angular/forms';
import { Observable } from 'rxjs';
export function validate(c: AbstractControl): Observable<{[key : number] : any}>{
console.log(c);
// return this.validateAgeObservable(c.value);
return this.validateAgeObservable(c.value).first();
}
function validateAgeObservable( age: number ) {
return new Observable(observer => {
observer.next(age === 20 ? null : {asyncInvalid: true});
// observer.complete(); or this or .first();
});
}
Component
ngOnInit(){
this.user = new FormGroup({
....
age:new FormControl('',null,validate),
....
}
我得到以下错误请帮忙
如果我删除异步验证器,它工作正常 .
UPDATE
在richards解决方案之后它可以工作,但我希望它能用于数字领域,为什么它的数字不起作用?
还有一件事,我在页面加载时注意到验证器被称为三次,为什么会这样?
1 回答
我得到了这个工作:
我将
key
类型更改为string
,并从validate
函数内的validateAgeObservable
调用的前面删除了this
.它编译,并没有在控制台中显示任何错误,所以我假设这将按下时工作 .
希望这对你有所帮助 .