I am trying to do an auto complete in my search bar what i have done so far is.
I have an array with some strings. and then i am trying to list in my items it i am able to search the particualr item.
But my requirement is not to display the items in a list. I have to make on clicking the search bar all the strings in array should come and the i have to make a search.
<ion-header>
<ion-navbar>
<ion-title>search</ion-title>
</ion-navbar>
<ion-toolbar primary >
<ion-searchbar (ionInput)="getItems($event)" autocorrect="off"></ion-searchbar>
</ion-toolbar>
</ion-header>
<ion-content padding>
<ion-list>
<ion-item *ngFor="let item of items">
{{ item }}
</ion-item>
</ion-list>
</ion-content>
Code for search.ts file:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
/*
Generated class for the SearchPage page.
See http://ionicframework.com/docs/v2/components/#navigation for more info on
Ionic pages and navigation.
*/
@Component({
templateUrl: 'build/pages/search/search.html',
})
export class SearchPage {
private searchQuery: string = '';
private items: string[];
constructor(private navCtrl: NavController) {
this.initializeItems();
}
initializeItems() {
this.items = [
'Amsterdam',
'Bogota',
]
}
getItems(ev: any) {
// Reset items back to all of the items
this.initializeItems();
// set val to the value of the searchbar
let val = ev.target.value;
// if the value is an empty string don't filter the items
if (val && val.trim() != '') {
this.items = this.items.filter((item) => {
return (item.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
}
}
Question :
How to get the value of an array through auto complete in ionic 2.
In order to achieve that, you just need to add a small thing to your code. Please take a look at this plunker.
Like you can see there, with the
showList
variable we can show the results only after the user has searched something.We first set that variable to
false
in theconstructor
and then we set it totrue
inside thegetItems(...)
method.