Я пытаюсь использовать TYPEHEAD для своего ввода с библиотекой ng-bootstrap , чтобы показать список объектов (как выбор без поля):
HTML
<input type="search"
#instance="ngbTypeahead"
placeholder="Search"
aria-label="Search"
[(ngModel)]="model"
[ngbTypeahead]="search"
[resultTemplate]="rt"
[inputFormatter]="formatter"
(focus)="focus$.next($event.target.value)"
(click)="click$.next($event.target.value)"
>
Когда я пишу имя своего объекта, я получаю empty value
семь раз (все объекты, которые я жду), если я выбираю объектзначение на входе отображается правильно (но в поле оно пусто).
TS
search = (text$: Observable<string>) =>
text$.pipe(
debounceTime(200),
distinctUntilChanged(),
merge(this.focus$),
merge(this.click$.pipe(filter(() => !this.instance.isPopupOpen()))),
map(term => (term === '' ? this.productList
: this.productList.filter(v => v.name_product.toLowerCase().indexOf(term.toLowerCase()) > -1)).slice(0, 10))
);
formatter = (x: {name_product: string}) => x.name_product;
searchUrl(url){
if(url){
window.open(url,'_blank');
}
}
JSON
productList =
[
{
id_product:1,
name_product: 'Laptop Dell'
},
{
id_product:2,
name_product: 'Laptop HP'
},
{
id_product:3,
name_product: 'G-Shock Casio'
},
{
id_product:4,
name_product: 'Casio LR-T CALC'
},
{
id_product:5,
name_product: 'LG G3 Stylus'
},
{
id_product:6,
name_product: 'DYMO 450 Turbo'
},
{
id_product:7,
name_product: 'Brother QL 700'
}
];
Но мне нужно показать название моего продукта (name_product)
, но в моем [(ngModel)]="model"
я надеюсь получить идентификатор (id_product)
.Как можно исправить эту ошибку?
1027 * Вот мой
stackblitz этой ошибки.