import { Directive, ElementRef, Input } from '@angular/core';
import { NgModel } from '@angular/forms';
declare var $;
@Directive({
selector: '[ngModel][autocomplete]',
providers: [NgModel]
})
export class Autocomplete {
@Input() listItem: any = [];
constructor(public _elementRef: ElementRef, private ngModel: NgModel) {
}
ngAfterViewInit() {
let that = this;
$(this._elementRef.nativeElement).typeahead({
source: this.listItem.map(item => {
return { id: item.account.toString(), name: item.account.toString() };
})
});
this.ngModel.valueChanges.subscribe(function(value) {
/* Set any value of your custom control */
$(this._elementRef.nativeElement).data("newValue", value);
});
/* Inform ng model for any new change happened */
$(this._elementRef.nativeElement).bind("change", ()=>{
that.ngModel.update.emit($(that._elementRef.nativeElement).val());
});
}
}
0
Nove Sanchez
On
I'm using the same plugin and this is how I refresh the model.
We can do something like that. It works for me.
In html template
In typescript code