Home

Awesome

npm version npm npm

Angular Typeahead Directive/Component (Standalone)

This is an extract of the typeahead component from the open source Echoes Player.

Data Sources Support

Its built with JSONP support by default.
Supports HTTP remote source with any http method (get, post etc..). Supports static list (in array form).

Angular Support

Now, ngx-typeahead now follows Angular versions, starting with ngx-typeahead@6.0.0 for Angular 6.X.X.
For Angular 4.3/5.X (With the new HttpClient)- please use version > 0.2.1
For Angular 2, 4 (Without HttpClient)- please use version 0.0.3

AOT compatible

Angular Consulting Services

I'm a Senior Javascript Engineer & A Front End Consultant at Orizens. My services include:

Contact Me Here

Installation

npm install ngx-typeahead --save-dev

Supported API

Inputs

InputTypeRequiredDescription
taUrlstringYESthe url of a remote server that supports jsonp calls.
taParams{ key: string, value: any}optional, default: {}a {key,value} (json) object to include as params for the json call. Each api supports different structure.
taQueryParamqueryoptional, default: 'q'a string member which is set with the query value for search.
taCallbackParamValuequeryoptional, NO Defaulta string value for the callback query parameter.
taItemTplTemplateRef- optionala template reference to be used for each result item.
taApistringoptional, default: 'jsonp'the utility to make a request with - 'jsonp', 'http'.
taApiMethodstringoptional, default: 'get'the method to be used in either 'jsonp' or 'http'.
taListany[]optionalprovide a static list of items to display. This prevents any remote request and has first precedence.
taListItemFieldstring[]optionalif item in static list is an object, this list of keys in the object that are checked when the list is filtered with the query. if list is empty, all keys are checked
taListItemLabelstringoptionalif static list of type object - this label is used as the key for displaying the item in the suggestions list - item[label]
taDebouncenumberoptionalset the debounce time before a request is called
taAllowEmptybooleanoptional, default: falseif true, it allows empty strings to pass and invoke search
taCaseSensitivebooleanoptional, default: falseif true, comparing query is performed with case sensitive
taDisplayOnFocusbooleanoptional, default: falseif true, will display results (if exist) when input is clicked

Outputs

OutputTypeRequiredDescription
taSelectedstringYESemits an event once the item is selected.

DEMO

Demo with all parameters StackBlitz

Usage

App/Component should be loaded as a standalone component:

import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { provideHttpClient, withJsonpSupport } from '@angular/common/http';

bootstrapApplication(AppComponent, {
  providers: [provideHttpClient(withJsonpSupport())],
});

Then, in your component, add to imports array:

import { Component } from "@angular/core";
import { NgxTypeAheadComponent } from 'ngx-typeahead';

@Component({
  selector: "app",
  template: `
    <div class="search-results">
      <input
        [value]="search"
        ngxTypeahead
        [taUrl]="url"
        [taParams]="params"
        (taSelected)="handleResultSelected($event)"
      />
    </div>
  `,
  imports: [NgxTypeAheadComponent]
})
export class AppComponent {
  url = "http://suggestqueries.google.com/complete/search";
  params = {
    hl: "en",
    ds: "yt",
    xhr: "t",
    client: "youtube",
    q: query,
  };
  search = "";

  handleResultSelected(result) {
    this.search = result;
  }
}

Custom Template For Item

import { Component } from "@angular/core";
import { NgxTypeAheadComponent } from 'ngx-typeahead';

@Component({
  selector: "app",
  template: `
    <div class="search-results">
      <input
        [value]="search"
        ngxTypeahead
        [taUrl]="url"
        [taParams]="params"
        [taItemTpl]="itemTpl"
        (taSelected)="handleResultSelected($event)"
      />
      <ng-template #itemTpl let-result>
        <strong>MY {{ result.result }}</strong>
      </ng-template>
    </div>
  `,
  imports: [NgxTypeAheadComponent]
})
export class AppComponent {
  url = "http://suggestqueries.google.com/complete/search";
  params = {
    hl: "en",
    ds: "yt",
    xhr: "t",
    client: "youtube",
    q: query,
  };
  search = "";

  handleResultSelected(result) {
    this.search = result;
  }
}

Showcase Examples

NgxTypeahead

This library was generated with Angular CLI version 9.1.11.