формат начальной загрузки ng для всех свойств объекта

#angular #ng-bootstrap #typeahead

#angular #ng-bootstrap #заголовок типа

Вопрос:

Я работаю над проектом angular 6 и использую ng-bootstrap typeahead для поиска по этому объекту:

 const options: SelectItem[] = [
{ name: 'home', id: 1 },
{ name: 'dashboard', id: 2 },
{ name: 'panel', id: 3 } ];
  

теперь я просто могу выполнять поиск по имени:

 search = (text$: Observable<string>) =>
    text$.pipe(
        debounceTime(200),
        map(term => term === '' ? []
            : options.filter(v => v.name.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10))
    )
formatter = (result: string) => result.toUpperCase();
  

но я хочу выполнить поиск как по идентификатору, так и по имени в моем поле поиска…
любой орган может помочь?

Ответ №1:

просто измените функцию search, чтобы включить новое условие

 search = (text$: Observable<string>) =>
    text$.pipe(
        debounceTime(200),
        map(term => term === '' ? []
            : options.filter(v => 
               v.name.toLowerCase().indexOf(term.toLowerCase())>-1 ||
               v.id== term
            ).slice(0, 10))
    )
  

Обратите внимание, что, поскольку id — это число, поэтому вам нужно преобразовать термин в число (термин )

простой пример можно увидеть в stackblitz