угловой с начальной загрузкой - PullRequest
0 голосов
/ 09 декабря 2018

Я пытался заставить мою Typeahead работать:

<div *ngFor="let item of items; index as i">
    <input type="text" name="name{{i}}" [(ngModel)]="item.name" [ngbTypeahead]="searchItem" />
</div>

компонент:

export class MyComponent implements OnInit {

    searchItem: any;

    ngOninit() {
        this.searchItem = (text$: Observable<string>) => text$.pipe(
            debounceTime(250),
            distinctUntilChanged(),
            switchMap((itemName: string) => itemName.length >= 2 ? this.service.getItems() ? of([])),
            switchMap((items: Item[]) => items.length > 0 ? items.reduce((acc, cur) => [...acc, cur.name], []) : [])
        );
    }
}

Во время выполнения после ввода 2 букв в Typeahead, Angular дает мнеследующая ошибка:

Cannot find a differ supporting object 'xxxx' of type 'string'. NgFor only supports binding to Iterables such as Arrays.

, где 'xxxx' - это свойство name элемента.

Но если я изменю функцию reduce на следующую:

switchMap((items: Item[]) => items.length > 0 ? items.reduce((acc, cur) => [[...acc, cur.name]], []) : [])

, где он возвращает массив только с одним элементом, который является другим массивом, Angular не выдаст мне никакой ошибки, но покажет первые 2 значения в той же строке во всплывающем окне Typeahead и 3-е во второй строке.(Служба возвращает 3 товара.)

Есть идеи?

1 Ответ

0 голосов
/ 10 декабря 2018

Похоже, что текущая начальная загрузка Bootstrap не работает с switchMap, но map, как в примере в документе.

...