Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NgbTypeahead selectItem get clicked item ngBootstrap angular2

In this answer, it was explained to me to use selectItem to get the select event.

But at this point, the model I bound to the text box is still the original text the user typed, not the select item.

I use

(selectItem)="search(model)"

to get the event, and in TS

search(model) { 
this._service.search(model).subscribe(
  results => this.results = results,
  error => this.errorMessage = <any>error);

}

but as mentioned above, that calls my backend with the user-typed text, not the full text of the selected item of the typeahead.

My backend logs

2017/03/24 20:44:14 /api/typeahead/ok
2017/03/24 20:44:14 /api/search/ok

where the second should be /api/search/$actualSelectedItem.

like image 934
Wilbert Avatar asked Mar 24 '17 19:03

Wilbert


1 Answers

You should be using $event to get the selected Items as below

<input type="text" class="form-control" (selectItem)="selectedItem($event)" [(ngModel)]="model" [ngbTypeahead]="search" [resultFormatter]="formatter" />
<hr>
<pre>Model: {{ model | json }}</pre>
clicked item {{clickedItem}}

Your method should be as

selectedItem(item){
    this.clickedItem=item.item;
    console.log(item);
  }

LIVE DEMO

like image 160
Aravind Avatar answered Oct 29 '22 15:10

Aravind