У меня есть специальный валидатор, который проверяет значение поля на предмет его существования.Тем не менее, этот валидатор, похоже, не завершается после вызова и застревает в ожидании.Я хочу, чтобы ожидание, хотя, только когда запрос в валидаторе находится в состоянии ожидания.Я использую опцию фильтрации «First ()», но это не оказывает влияния.Это мой валидатор:
public articleExistsValidator(formControl: AbstractControl): Observable <ValidationErrors | null > {
return this.ReplacementService.getArticle(this.clientName, formControl.value).pipe(
map(
article => {
if (article) {
this.newEquipmentType = article.equipmentTypeNumber;
return null;
}
}),
catchError ( err => {
return Observable.throw(err.statusText);
}
),
first()
);
}
, и это метод getArticle из Сервиса с другим Observable
public getArticle(
clientName: string,
articleName: string
): Observable<Article> {
const url = this.articleUrl + '/';
let searchParams = new HttpParams();
searchParams = searchParams.set('article-number', articleName);
const options = {
headers: this.getHttpHeaders(false),
params: searchParams
};
return (
this.httpClient
.get<Article>(url, options)
)
.first()
.catch((err: any) => Observable.throw(this.errorHandler(err)));
}