Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save mesadhan/a20c9d027f854412655ee6ab907fad7e to your computer and use it in GitHub Desktop.

Select an option

Save mesadhan/a20c9d027f854412655ee6ab907fad7e to your computer and use it in GitHub Desktop.
<form class="example-form">
<mat-form-field class="example-full-width">
<input matInput placeholder="State" aria-label="State" [matAutocomplete]="auto" [formControl]="stateCtrl">
<mat-autocomplete #auto="matAutocomplete">
<mat-option (onSelectionChange)="onSelectFn($event,state)" *ngFor="let state of filteredStates | async" [value]="state.name">
<img style="vertical-align:middle;" aria-hidden src="{{state.flag}}" height="25" />
<span>{{ state.name }}</span> |
<small>Population: {{state.population}}</small>
</mat-option>
</mat-autocomplete>
</mat-form-field>
<br/>
<mat-slide-toggle [checked]="stateCtrl.disabled" (change)="stateCtrl.disabled ? stateCtrl.enable() : stateCtrl.disable()">
Disable Input?
</mat-slide-toggle>
</form>
*******************************************************************
import {Component, EventEmitter, OnInit, Output} from '@angular/core';
import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs/Observable';
import {startWith} from 'rxjs/operators/startWith';
import {map} from 'rxjs/operators/map';
import {MatAutocompleteSelectedEvent} from '@angular/material';
@Component({
selector: 'app-auto-complete2',
templateUrl: './auto-complete2.component.html',
styleUrls: ['./auto-complete2.component.css']
})
export class AutoComplete2Component implements OnInit {
stateCtrl: FormControl;
filteredStates: Observable<any[]>;
states: State[] = [
{name: 'Arkansas', population: '2.978M', flag: 'https://upload.wikimedia.org/wikipedia/commons/9/9d/Flag_of_Arkansas.svg'},
{name: 'California1', population: '39.14M', flag: 'https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg'},
{name: 'California2', population: '39.14M', flag: 'https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg'},
{name: 'California3', population: '39.14M', flag: 'https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg'},
{name: 'Florida', population: '20.27M', flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Florida.svg'},
{name: 'Texas', population: '27.47M', flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Texas.svg'}
];
ngOnInit(): void {}
constructor() {
this.stateCtrl = new FormControl();
this.filteredStates = this.stateCtrl.valueChanges
.pipe( startWith(''), map(val => {
if (val) {
return this.filterStates(val);
}
} )
);
}
filterStates(name: string) {
console.log('filterStates ', name);
// return this.states;
return this.states.filter(state => state.name.toLowerCase().indexOf(name.toLowerCase()) !== -1 );
}
onSelectFn(event: MatAutocompleteSelectedEvent, state: State) {
console.log(event);
console.log(state);
}
}
export class State {
constructor(public name: string, public population: string, public flag: string) { }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment