Autocomplete input autocomplete search using the material; Simply install material ui and create search functionality using this and call api in angular 16 applications.
Angular 16 Material Autocomplete with Api
Steps to implement autocomplete input search using material ui library in angular 16 apps with api:
Step 1 – Create New Angular App
First of all, open your terminal or cmd and run the following command on it to install angular app:
ng new my-new-app
Step 2 – Install Material Package
Once you have installed the angular app into your system. Next, you need to run the following command on terminal or cmd to install angular material:
ng add @angular/material
Step 3 – Import Modules in Module.ts File
Once you have installed angular material, you need to import material in module.ts. So visit src/app directory and open app.module.ts file. Then add the following code into it:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import {FormsModule, ReactiveFormsModule} from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import {MatAutocompleteModule} from '@angular/material/autocomplete'; import { HttpClientModule } from '@angular/common/http'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, BrowserAnimationsModule, MatFormFieldModule, MatInputModule, MatAutocompleteModule, FormsModule, ReactiveFormsModule, HttpClientModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Step 4 – Create Autocomplete Input Search on View File
Now, you need to create simple reactive form to get input values of autocomplete search. So, visit src/app/app.component.html and update the following code into it:
<h1>Angular 16 material input autocomplete with API example - Tutsmake.Com</h1> <form class="example-form"> <mat-form-field> <input type="text" placeholder="Enter Location" [formControl]="myControl" matInput [matAutocomplete]="auto"> <mat-autocomplete #auto="matAutocomplete"> <mat-option *ngFor="let option of filteredOptions | async" [value]="option.name"> {{option.name}} </mat-option> </mat-autocomplete> </mat-form-field> </form>
Step 5 – Add Code On Component ts File
Next, you need to visit the src/app directory and open app.component.ts. Then add the following code into component.ts file:
import { Component } from '@angular/core'; import {Observable} from 'rxjs'; import { startWith, debounceTime, distinctUntilChanged, switchMap, map } from 'rxjs/operators'; import {FormControl} from '@angular/forms'; import { PostService } from './post.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { myControl = new FormControl(); options = []; filteredOptions: Observable; constructor(private service: PostService) { this.filteredOptions = this.myControl.valueChanges.pipe( startWith(''), debounceTime(400), distinctUntilChanged(), switchMap(val => { return this.filter(val || '') }) ) } filter(val: string): Observable { return this.service.getData() .pipe( map(response => response.filter(option => { return option.name.toLowerCase().indexOf(val.toLowerCase()) === 0 })) ) } }
Step 6 – Create Service to Call API
To create a service for material autocomplete for calling apis, So visit the src/app/ directory and open or create post.service.ts. Then add the following code to post.service.ts file:
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { tap, map } from 'rxjs/operators'; import { of } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class PostService { constructor(private http: HttpClient) { } opts = []; getData() { return this.opts.length ? of(this.opts) : this.http.get('https://jsonplaceholder.typicode.com/users').pipe(tap(data => this.opts = data)) } }
Step 7 – Start Angular App
Finally, run the following commands on terminal or cmd to start angular app:
ng serve
Open your browser and navigate to http://localhost:4200
to see your autocomplete component in action.
Conclusion
Congratulations you have learned how to create an autocomplete input search in angular 16 apps using angular material.