TypeaHead для получения данных из API, используя angular 6 с RXjs - PullRequest
0 голосов
/ 20 сентября 2018

enter image description here

Я использую эту ссылку для реализации функции TypeAhead

https://ng -bootstrap.github.io / #/ components / typeahead / examples

поиск в википедии для извлечения данных из вызова API.M y api перед вызовом throws отменяет исключение.

        <input id="modelTypeahead" type="text" class="form-control" [(ngModel)]="searchCriteria" 
        [ngbTypeahead]="search" placeholder="Device CRM" #model="ngModel"
        name="model" [editable]="false" [disabled]="searching" (selectItem)="modelSelected($event.item)"
        [resultFormatter]="formatMatches" [inputFormatter]="formatMatches"/>

Я обновил свое приложение до angular 6, и я следую этому шаблону, и всегда нажимаю на api call therows отмененный http-запрос,Понятия не имею, где мне не хватает.

search = (text$: Observable<string>) =>
text$.pipe(
  debounceTime(300),
  distinctUntilChanged(),
  tap(() => this.searching = true),
  switchMap(term =>
    this.auditService.search(term, this.authService.getSSO()).pipe(
      tap(() => this.searchFailed = false),
      catchError(() => {
        this.searchFailed = true;
        return of([]);
      }))
  ),
  tap(() => this.searching = false)
)

// На своем сервисном уровне я вызываю эту сервисную функцию [ this.auditService.search ]

   search(term: string, ssoId: string) {
if (term === '') {
  return of([]);
}

let postData = {
  'ssoId': ssoId,
  'crmNumber': term
};


return this.httpClient
.post(this.modelSearchURL+'/device/search', JSON.stringify(postData), {});

}

...