#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