|
<ejs-autocomplete id='country' #sample [dataSource]='data' [fields]='fields' (filtering)='onFiltering($event)' [popupHeight]='height' [allowFiltering]='true'
[placeholder]='watermark' [showPopupButton]='true' width='300px'>
<ng-template #noRecordsTemplate>
<div id="nodata"> No matched item, do you want to add it as new item in list?</div> <button (click)="addNewItem($event)" class="e-control e-btn">Add New Item</button>
</ng-template>
</ejs-autocomplete> |
|
export class CustomValueComponent {
// defined the JSON of data
public data: { [key: string]: Object; }[] = [
{ Name: 'Australia', Code: 'AU' },
{ Name: 'Bermuda', Code: 'BM' },
{ Name: 'Canada', Code: 'CA' },
……………………………
];
@ViewChild('sample')
public autoObj: AutoCompleteComponent;
public addNewItem = () => {
// get the typed characters
let customValue: string = (this.autoObj.element.getElementsByClassName('e-input')[0] as HTMLInputElement).value;
// make new object based on typed characters
let newItem: { [key: string]: Object; } = {'Name': customValue, 'Code': customValue };
// new object added to data source.
(this.autoObj.dataSource as Object[]).push(newItem);
// close the popup element.
this.autoObj.hidePopup();
// pass new object to addItem method.
this.autoObj.addItem(newItem);
// select the newly added item.
this.autoObj.value = customValue;
}
} |
|
import { AutoCompleteComponent } from '@syncfusion/ej2-ng-dropdowns';
export class CustomValueComponent {
@ViewChild('sample')
public autoObj: AutoCompleteComponent;
} |