Typeahead открыт при закрытом вызове несколько раз бэкэнд-сервис - PullRequest
0 голосов
/ 06 июля 2019

Я создал Angular Bootstrap typeahead, который должен открываться при нажатии.Так вот мой код:

  resultFormatter = (inventoryModel: InventoryModel) => this.mapResult(inventoryModel);

 const inventories$ = this.recruiterService.getInventories();

    this.search = (text$: Observable<string>) => {
      const debouncedText$ = text$.pipe(debounceTime(200), distinctUntilChanged());
      const clicksWithClosedPopup$ = this.click$.pipe(filter(() => !this.instance.isPopupOpen()));
      const inputFocus$ = this.focus$;

      return merge(debouncedText$, inputFocus$, clicksWithClosedPopup$, inventories$).pipe(
        filter((val: string) => val !== ''),
        mergeMap(() => inventories$),
        map((inventoryModels: InventoryModel[]) => inventoryModels)
      );
    };

Это выполняется в методе ngOnInit().Мой html выглядит следующим образом:

 <input
                      placeholder="Start typing..."
                      id="inventoryId"
                      type="text"
                      class="form-control"
                      [ngbTypeahead]="search"
                      (focus)="focus$.next($event.target.value)"
                      (click)="click$.next($event.target.value)"
                      [inputFormatter]="resultFormatter"
                      [resultFormatter]="resultFormatter"
                      (selectItem)="onItemSelected($event)"
                      #instance="ngbTypeahead"
                    />

Проблема с этим кодом заключается в следующем: 1. Он не открывается при щелчке на входе 2. После ввода ввода мой бэкэнд вызывает несколько раз 3. При вводесписок не сжимается 4. В конце концов, когда элемент выбран, снова открывается раскрывающийся список (??)

Кто-нибудь знает, как использовать этот тип сообщения в случае моей проблемы?

...