Autocomplete MDB Pro component


Basic example

<mdb-completer [label]="'Select color'" initialValue="Select color" name="autocomplete" [(ngModel)]="searchStr" [datasource]="dataService" [minSearchLength]="0">
    </mdb-completer>
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');
}
}
    

NgModel value

Selected state:


<mdb-completer [label]="'Select color'" name="autocomplete" initialValue="'Select color'" [(ngModel)]="searchStr" [datasource]="dataService"
      [minSearchLength]="0">
</mdb-completer>
<p>Selected value: {{searchStr}}</p>
import { Component } from '@angular/core';
import { Component} from '@angular/core';
import { CompleterService, CompleterData } from 'ng-mdb-pro/pro';

@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');
    }
}
    

Initial value


<mdb-completer [label]="'Select color'" name="autocomplete" initialValue="'Select color'" [(ngModel)]="searchStr" [datasource]="dataService"
      [minSearchLength]="0">
</mdb-completer>
import { Component } from '@angular/core';
import { Component} from '@angular/core';
import { CompleterService, CompleterData } from 'ng-mdb-pro/pro';

@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' },
    ];

    // Initial value as ngModel
    protected searchStr: string = this.searchData[0].color;
    constructor(private completerService: CompleterService) {
        this.dataService = completerService.local(this.searchData, 'color', 'color');
    }
}
    

inputClass example


<mdb-completer [label]="'Select color'" name="autocomplete" [inputClass]="'red-text'" initialValue="'Select color'" [(ngModel)]="searchStr" [datasource]="dataService"
  [minSearchLength]="0">
</mdb-completer>
import { Component } from '@angular/core';
import { Component} from '@angular/core';
import { CompleterService, CompleterData } from 'ng-mdb-pro/pro';

@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');
}
}

Remote data


<mdb-completer [label]="'Select color'" name="autocomplete" initialValue="'Select color'" [(ngModel)]="searchStr"
      [dataService]="dataRemote" [minSearchLength]="0">
</mdb-completer>
import { Component } from '@angular/core';
import { Component } from '@angular/core';
import { CompleterService } from 'ng-mdb-pro/pro';
import { CompleterData } from 'ng-mdb-pro/pro/autocomplete';
import { Http } from '@angular/http';



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

    public dataRemote: CompleterData;

    constructor(private completerService: CompleterService, http: Http) {
        // 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');
    }

}

Events


<mdb-completer [label]="'Select color'" name="autocomplete" (keyup)="onKeyUp()" (keydown)="onKeyDown()" (opened)="onOpen()" (highlighted)="onHighlight()" (selected)="onSelect()" (focusin)="onFocus()" (blur)="onBlur()" initialValue="'Select color'" [(ngModel)]="searchStr"
      [dataService]="dataRemote" [minSearchLength]="0">
</mdb-completer>
<p>is focused: {{focused}}, is blurred: {{blurred}}</p>


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

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


    public blurred = null;
    public focused = null;

    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');
    }

    onFocus() {
        this.focused = true;
        this.blurred = false;
    }

    onBlur() {
        this.focused = false;
        this.blurred = true;
    }

    onSelect() {
        console.log('Item was selected');
    }

    onHighlight() {
        console.log('Item was highlightened');
    }

    onKeyUp() {
        console.log('Key up event');
    }

    onKeyDown() {
        console.log('Key down event');
    }

    onOpen() {
        console.log('Dropdown was opened');
    }
}

Options:

Attribute Description Type Required Default
datasource Autocomplete list data source can be an array of strings or a URL that results in an array of strings or a CompleterData object Array <string>|string|CompleterData Yes
dataService Deprecated use datasource instead. Autocomplete list data source. CompleterData Yes
ngModel see the angular forms API. string Yes
autofocus Set input focus when the page loads boolean No false
clearUnselected Clear the input on blur if not selected. boolean No false
clearSelected Clear the input when a result is selected. boolean No false
disableInput If true disable the input field. boolean No false
initialValue Initial value for the component. Value is parsed using: titleField, descriptionField and imageField and used as selected value any No
inputClass class attribute of the input element. string No
matchClass CSS class to apply for matching part of the title and description. string No
maxChars Maximal number of characters that the user can type in the component. number No 524288
minSearchLength Minimal number of characters required for searching. number No 3