Angular Bootstrap autocomplete

Angular Autocomplete - Bootstrap 4 & Material Design

Angular Bootstrap autocomplete is a component which predicts the words basing on the first few letters given by a user, while one is typing it.


Basic example MDB Pro component


        <mdb-autocomplete [label]="'Select color'" name="autocomplete" [(ngModel)]="searchStr" [datasource]="dataService"
          [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component } from '@angular/core';
        import { CompleterService, CompleterData } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'autocomplete-example',
        templateUrl: 'autocomplete.html',
        })
        export class AutocompleteComponent {

        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }
        }
      

Disabled autocomplete MDB Pro component

Use [disableInput]="true" input to disable autocomplete input field.


        <mdb-autocomplete [disableInput]="true" [label]="'Select color'" name="autocomplete" [(ngModel)]="searchStr"
          [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component } from '@angular/core';

        @Component({
        selector: 'disabled-autocomplete',
        templateUrl: 'disabled-autocomplete.html',
        })

        export class DisabledAutocompleteComponent {

        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }
      

Remote data MDB Pro component


        <mdb-autocomplete [label]="'Select color'" name="autocomplete" [(ngModel)]="searchStr" [dataService]="dataRemote"
          [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component } from '@angular/core';
        import { CompleterService, CompleterData } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'completer-remote',
        templateUrl: './completer-remote.component.html',
        styleUrls: ['./completer-remote.component.scss']
        })
        export class CompleterRemoteComponent {

        public dataRemote: CompleterData;
        constructor(private completerService: CompleterService) {
          // tslint:disable-next-line:max-line-length
          this.dataRemote =
          completerService.remote('https://raw.githubusercontent.com/oferh/ng2-completer/master/demo/res/data/countries.json?',
          'name', 'name');
        }
        }
      

Template-driven forms MDB Pro component

In this section you will find informations on how to use our autocomplete component in template-driven forms.

Remember to import FormsModule in your's app.module.ts

Default value

Bind in two-way ngModel from component.html with searchStr in component.ts file


        <mdb-autocomplete [label]="'Select color'" name="autocomplete" [(ngModel)]="searchStr" [datasource]="dataService"
          [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component, OnInit } from '@angular/core';
        import { CompleterService, CompleterData } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'defaultvalue-autocomplete',
        templateUrl: 'defaultvalue-autocomplete.html',
        })

        export class DefaultValueAutocompleteComponent implements OnInit {

        protected searchStr = 'red';
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }

        ngOnInit() {
          this.searchStr = 'red';
        }
      

Reactive forms MDB Pro component

In this section you will find informations on how to use our autocomplete component in reactive forms.

Remember to import ReactiveFormsModule in your's app.module.ts

Default value

Set default value in FormControl


        <form [formGroup]="testForm">
          <mdb-autocomplete [label]="'Select color'" name="autocomplete" formControlName="testAutocomplete"
            [datasource]="dataService" [minSearchLength]="0">
          </mdb-autocomplete>
        </form>
      

        import { Component, OnInit } from '@angular/core';
        import { FormGroup, FormControl } from '@angular/forms';
        import { CompleterService, CompleterData } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'defaultvalue-autocomplete',
        templateUrl: 'defaultvalue-autocomplete.html',
        })

        export class DefaultValueAutocompleteComponent implements OnInit {

        testForm: FormGroup;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }

        ngOnInit() {
          this.testForm = new FormGroup({
          testAutocomplete: new FormControl('red')
          });
        }
      

Angular Autocomplete - API

In this section you will find informations about required modules and available inputs, outputs, methods and events of autocomplete component.


Modules used

In order to speed up your application, you can choose to import only the modules you actually need, instead of importing the entire MDB Angular library. Remember that importing the entire library, and immediately afterwards a specific module, is bad practice, and can cause application errors.

API Reference for MDB Angular Autocomplete:
// MDB Angular Pro
import { AutocompleteModule, WavesModule, InputsModule } from 'ng-uikit-pro-standard'

Components

MdbAutocomplete

Selector: mdb-autocomplete

Type: CompleterComponent


Inputs

Name Type Default Description Example
autoFocus boolean false Set focus on autocomplete input when page loads [autoFocus]="true"
clearButtonTabindex number 1 Changes tabindex of clear button [clearButtonTabindex]="-1"
clearSelected boolean false Clears the input when a result is selected [clearSelected]="true"
clearUnselected boolean false Clears the input on blur if not selected [clearUnselected]="true"
datasource string | Array | CompleterData - Autocomplete list data source can be an array of strings or a URL that results in an array of strings or a CompleterData object this.dataService = completerService.local(this.searchData, 'color', 'color');
disableInput boolean false Disables autocomplete input field [disableInput]="true"
inputClass string - Custom class for autocomplete input [inputsClass]="'red-text'"
matchClass string - Custom class to apply for matching part of the title and description [matchClass]="'red-text'"
maxChars number 524288 Maximal number of characters that the user can type in the component [maxChars]="50"
minSearchLength number 3 Minimal number of characters required for searching [minSearchLength]="0"

Outputs

Name Type Description Example
blur EventEmitter<any> Event fired on autocomplete input blur (blur)="onBlur($event)"
focusEvent EventEmitter<any> Event fired on autocomplete input focus (focusEvent)="onFocusEvent($event)"
keydown EventEmitter<any> Event fired when key is pressed down in searchbox (keydown)="onKeydown($event)"
keyup EventEmitter<any> Event fired when key is pressed up in searchbox (keyup)="onKeyup($event)"
opened EventEmitter<boolean> Event fired when the autocomplete dropdown is opened (opened)="onOpened($event)"
Example:

        <mdb-autocomplete [label]="'Select color'" (selected)="onSelected($event)" (highlighted)="onHighlighted($event)"
          (blur)="onBlur($event)" (focusEvent)="onFocusEvent($event)" (opened)="onOpened($event)" (keyup)="onKeyup($event)"
          (keydown)="onKeydown($event)" initialValue="Select color" name="autocomplete" [(ngModel)]="searchStr"
          [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { CompleterService } from 'ng-uikit-pro-standard';
        import { CompleterData } from 'ng-uikit-pro-standard';
        import { Component, AfterViewInit } from '@angular/core';

        @Component({
        selector: 'completer-events',
        templateUrl: './completer-events.component.html',
        styleUrls: ['./completer-events.component.scss'],
        })
        export class CompleterEventsComponent implements AfterViewInit {

        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }

        onSelected(event: any) {
          console.log(event);
        }

        onHighlighted(event: any) {
          console.log(event);
        }

        onBlur(event: any) {
          console.log(event);
        }

        onFocusEvent(event: any) {
          console.log(event);
        }

        onOpened(event: any) {
          console.log(event);
        }

        onKeyup(event: any) {
          console.log(event);
        }

        onKeydown(event: any) {
          console.log(event);
        }
        }
      

Angular Multiselect - examples & customization


Change input text color MDB Pro component


        <mdb-autocomplete [label]="'Select color'" name="autocomplete" [inputClass]="'red-text'" initialValue="'Select color'"
          [(ngModel)]="searchStr" [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component } from '@angular/core';
        import { Component} from '@angular/core';
        import { CompleterService, CompleterData } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'autocomplete-model',
        templateUrl: './autocomplete-model.component.html',
        styleUrls: ['./autocomplete-model.component.scss']
        })
        export class AutocompleteModelComponent {

        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }
        }
      

Autocomplete with icons MDB Pro component


        <mdb-autocomplete [label]="'Select color'" initialValue="Select color" name="autocomplete" [(ngModel)]="searchStr"
          [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>
      

        import { Component } from '@angular/core';
        import { CompleterData, CompleterService } from 'ng-uikit-pro-standard';

        @Component({
        selector: 'autocomplete-icons',
        templateUrl: './autocomplete-icons.component.html',
        styleUrls: ['./autocomplete-icons.component.scss'],
        })
        export class AutocompleteIconsComponent {
        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { name: 'Anthony', icon: 'https://mdbootstrap.com/img/Photos/Avatars/avatar-1.jpg' },
          { name: 'Jane', icon: 'https://mdbootstrap.com/img/Photos/Avatars/avatar-2.jpg' },
          { name: 'John', icon: 'https://mdbootstrap.com/img/Photos/Avatars/avatar-8.jpg' },
          { name: 'Samantha', icon: 'https://mdbootstrap.com/img/Photos/Avatars/avatar-4.jpg' }
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'name', 'name').imageField('icon');
        }

        }
      

No results custom message MDB Pro component

Use textNoResults input to set your custom message, which will be displayed if the component doesn't return any value.


        <mdb-autocomplete [label]="'Select color'" textNoResults="Your custom message" name="autocomplete" initialValue="'Select color'"
          [(ngModel)]="searchStr" [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>

      

        import { Component } from '@angular/core';
        import { CompleterData } from 'path-to-completerData';
        import { CompleterService } from 'path-to-completerService';

        @Component({
        selector: 'autocomplete-example',
        templateUrl: 'autocomplete.html',
        })
        export class AutocompleteComponent {

        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }
        }
      

Custom searching text MDB Pro component

Use [textSearching] input to set custom text displayed when component searches for the given values.


        <mdb-autocomplete [label]="'Select color'" [textSearching]="'Your custom searching text'" name="autocomplete"
          initialValue="'Select color'" [(ngModel)]="searchStr" [datasource]="dataService" [minSearchLength]="0">
        </mdb-autocomplete>

      

        import { Component } from '@angular/core';
        import { CompleterData } from 'path-to-completerData';
        import { CompleterService } from 'path-to-completerService';

        @Component({
        selector: 'autocomplete-example',
        templateUrl: 'autocomplete.html',
        })
        export class AutocompleteComponent {

        protected searchStr: string;
        protected dataService: CompleterData;
        protected searchData = [
          { color: 'red' },
          { color: 'green' },
          { color: 'blue' },
          { color: 'cyan' },
          { color: 'magenta' },
          { color: 'yellow' },
          { color: 'black' },
        ];

        constructor(private completerService: CompleterService) {
          this.dataService = completerService.local(this.searchData, 'color', 'color');
        }
        }