Как правильно сделать поиск на rxjs?

Здравствуйте. А не подскажите, можно ли как-то упростить поток который вызывает поиск на rxjs? Api может возвращеть null если не нашло записи. Спасибо.

export interface Organization {
  code: string,
  manager: string,
  fullName: string,
  name: string,
  address: string,
  activity: string,
  status: string
}

private subscription = new Subscription();

  constructor(private ufopService: UfopService) {
    this.subscription.add(
      this.searchText$.pipe(
        debounceTime(500),
        distinctUntilChanged(),
        switchMap((code: string) => iif(
          () => code.length === MIN_SEARCH_LENGTH,
          this.ufopService.getOrganization(code).pipe(
            switchMap((value: Organization | null) => iif(
              () => value === null,
              of(''),
              of(value).pipe(
                pluck('fullName')
              ))
            )
          ),
          of(''))
        )
      ).subscribe(fullName => this.fullName = fullName)
    )
  }

  onKeyPress(event: Event) {
    const { value } = (event.target as HTMLInputElement);
    this.searchText$.next(value)
  }
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
fullName$ = formControl.valueChanges.pipe(
  switchMap((value: string) => this.ufopService.getOrganization(value)),
  map((organization:  Organization | null) => organization?.fullName ??  '')
)


внутри getOrganization проверять на вашу длину.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы