Угловой: пользовательский валидатор не завершает работу и поэтому застревает в «ОЖИДАНИИ», хотя используется First () - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть специальный валидатор, который проверяет значение поля на предмет его существования.Тем не менее, этот валидатор, похоже, не завершается после вызова и застревает в ожидании.Я хочу, чтобы ожидание, хотя, только когда запрос в валидаторе находится в состоянии ожидания.Я использую опцию фильтрации «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)));

  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...