ngbTypeahead — передать параметры

я использую ngbTypeahead для функции опережающего поиска, но мне интересно, могу ли я передать параметры функции поиска.

<input id="typeahead-basic" type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="search(param1, param2)"/>

угловатый

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

Я проверил это, но, похоже, не работает. Angular 2 ng bootstrap typehead передает дополнительный параметр

Может ли кто-нибудь помочь мне с примером?


person Dev05    schedule 13.05.2019    source источник


Ответы (1)


Вход ngbTypeahead должен быть функцией, которая принимает наблюдаемую строку в качестве аргумента и возвращает наблюдаемую в виде массива или результатов. т.е. он должен быть типа (text: Observable<string>) => Observable<any[]> (как указывает документ API).

Ваш код был бы в порядке, если бы search был методом, принимающим два параметра и возвращающим возвращаемую функцию:

search(param1: SomeType, param2: SomeOtherType): (text: Observable<string>) => Observable<any[]> {
  return (text$: Observable<string>) => text$.pipe(
    ...
  );
} 

Но это не так. Я не уверен, чего вы хотите добиться здесь. Возможно, вам просто нужно использовать this.param1 и this.param2 в своей функции:

search = (text$: Observable<string>) =>
  text$.pipe(
    // use this.param1 and this.param2 here 
  );
person JB Nizet    schedule 13.05.2019
comment
Мне удалось сделать эту работу, когда я использовал код Observable‹{}›: search(param1: SomeType, param2: SomeOtherType): (text: Observable<string>) => Observable<{}> {.....}, однако Observable<any[]> выдает эту ошибку. - person Dev05; 14.05.2019
comment
Это означает, что search() возвращает Observable‹{}› вместо Observable‹Array‹Something››. Вы должны исправить этот метод. - person JB Nizet; 14.05.2019