Я не могу получить результаты из моей службы песен, чтобы показать их в моих результатах ng-bootstrap typeahead. Я получаю сообщение об ошибке: «Невозможно найти другой поддерживающий объект '[объект Object]' типа 'object'. NgFor поддерживает привязку только к Iterables, таким как массивы».
Я пробовал следовать примеру википедии на сайте ng-bootstrap: https://ng-bootstrap.github.io/#/components/typeahead/examples#http
В моем файле .ts есть:
formatter = (x: { title: string }) => x.title;
searchSongTitles = (text$: Observable<string>) =>
text$.pipe(
debounceTime(800),
distinctUntilChanged(),
tap(() => this.loadingNavbarSearchSongs$ = true),
switchMap(term =>
this.songsService.getSongsQuickSearch(term, this.titleMatchType$, this.sort$, this.sortDirection$).pipe(
tap(() => this.loadingNavbarSearchSongsFailed$ = false),
catchError(() => {
this.loadingNavbarSearchSongsFailed$ = true;
return of([]);
})
)
),
tap(() => this.loadingNavbarSearchSongs$ = false)
)
и мой файл .html имеет:
<input id="songtitles-search" placeholder="Song Title" type="text"
class="form-control form-control-sm my-sm-0 mr-sm-2"
name="song_titles_search" [(ngModel)]="songTitlesSearchText$"
[ngbTypeahead]="searchSongTitles" [resultFormatter]="formatter"
[inputFormatter]="formatter">
Модель: songsService.getSongsQuickSearch возвращает Observable<Song[]>
, где Song имеет следующие свойства: id: number; название: строка;
Мне нужно взять массив песен, поступающих из метода getSongsQuickSearch, чтобы они были интерактивными ссылками на название песни в раскрывающемся списке, которые ссылаются на страницу сведений о песне на основе ее идентификатора. Например:
<a [routerLink]="['/song-details', song.id]">{{ song.title }}</a>
SongsService
курс? - person Ian A   schedule 14.01.2019