【发布时间】:2018-10-20 14:27:22
【问题描述】:
我一直在寻找可以将异步验证器实现为 Angular 反应形式的大量教程,但我总是遇到错误。
我需要做的是检查字段中写入的值是否存在于存储在服务中的对象数组中。
问题是,当我与固定值进行比较时,验证器工作正常,但是当我尝试使用服务时,它说服务未定义。
表单代码:
ngOnInit() {
this.FormNuevaConf =this.fb.group({
'codigo': [null,null],
'valor': [null,null,this.valorUnicoValidator]
})}
验证器代码:
valorUnicoValidator (control: AbstractControl, service:UnidadesService): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {
return of(service.subscribe(control) === control.value).pipe(
map(result => result ? { invalid: true } : null)
);}
subscribe(control) 是服务中的一个函数,如果在从 db 查询返回的对象数组中找到 control.value,则返回一个值。
我还没有找到关于如何构建异步验证器的清晰解释,如果你有可以推荐我的,我会感谢的。
【问题讨论】:
-
我在试图找出我的问题的过程中发现了你的问题,并在这里找到了更好的答案:alligator.io/angular/async-validators
标签: angular validation asynchronous angular-reactive-forms