在Angular对话框中,我用于某些输入字段的自定义后端验证,该操作检查输入的值的存在。如果找不到该值,它将在该字段下方显示一条错误消息。 但是,当对后端的请求仍处于“ PENDING”状态时,它还会显示一条错误消息。完成请求并返回状态代码200时,错误消息消失。我不希望显示错误消息,但是当请求处于待处理状态时,仅当请求完成并且返回HTTP错误时,才会显示该消息。
我的自定义验证器如下所示:
public articleExistsValidator(formControl: AbstractControl): Observable <ValidationErrors | null > {
return this.meterReplacementService.getArticle(this.clientName, formControl.value).pipe(
map(
article => {
if (article) {
this.ac_equipmentNumber = article.equipment.equipmentNumber;
return null;
}
}),
catchError ( err => {
this.articleError = 'MeteringChangeProcessDlg.errorMsg.articleNotFound';
return Observable.throw(err.statusText);
}
)
)
}
我通常通过FormGroupBuilder实现这一目标。和HTML中的formControl标签。
这是来自自身HTML组件的HTML代码段,该HTML组件负责错误消息。
<div *ngIf="formControlDefined() && (!formControl.valid && formControl.touched)"
class="inputLabel error-label">
{{errorMsg}}
所以问题在于,一旦请求开始并处于待处理状态,验证器就会失效。
如何更改?
非常感谢