En esta respuesta , se me explicó que usara selectItem para obtener el evento de selección.
Pero en este punto, el modelo que vinculé al cuadro de texto sigue siendo el texto original que escribió el usuario, no el elemento seleccionado.
yo suelo
(selectItem)="search(model)"para obtener el evento, y en TS
search(model) { this._service.search(model).subscribe( results => this.results = results, error => this.errorMessage = <any>error);}
pero como se mencionó anteriormente, eso llama a mi backend con el texto escrito por el usuario, no el texto completo del elemento seleccionado de la escritura anticipada.
Mis registros de back-end
2017/03/24 20:44:14 /api/typeahead/ok 2017/03/24 20:44:14 /api/search/okdonde el segundo debería ser /api/search/$actualSelectedItem.
Debería usar $event para obtener los artículos seleccionados como se muestra a continuación
<input type="text" class="form-control" (selectItem)="selectedItem($event)" [(ngModel)]="model" [ngbTypeahead]="search" [resultFormatter]="formatter" /> <hr> <pre>Model: {{ model | json }}</pre> clicked item {{clickedItem}}Su método debe ser como
selectedItem(item){ this.clickedItem=item.item; console.log(item); }