No Preview

Sorry, but you either have no stories or none are selected somehow.

If the problem persists, check the browser console, or the terminal you've run Storybook from.

The component failed to render properly, likely due to a configuration issue in Storybook. Here are some common causes and how you can address them:

  1. Missing Context/Providers: You can use decorators to supply specific contexts or providers, which are sometimes necessary for components to render correctly. For detailed instructions on using decorators, please visit the Decorators documentation.
  2. Misconfigured Webpack or Vite: Verify that Storybook picks up all necessary settings for loaders, plugins, and other relevant parameters. You can find step-by-step guides for configuring Webpack or Vite with Storybook.
  3. Missing Environment Variables: Your Storybook may require specific environment variables to function as intended. You can set up custom environment variables as outlined in the Environment Variables documentation.

A component to display a list of suggestions following what the user is typing.

The typeahead is an ng-bootstrap component.

This documentation gives only the specifics for a usage within Post project.
Read the complete information about the component's configuration in ng-bootstrap typeahead documentation.

Make sure the @ng-bootstrap/ng-bootstrap package is already present in your project or follow ng-bootstrap installation guidelines.

To import all ng-bootstrap components:

import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; @NgModule({ imports: [NgbModule], }) export class YourAppModule { }

To import only this component:

import {NgbTypeaheadModule} from '@ng-bootstrap/ng-bootstrap'; @NgModule({ imports: [NgbTypeaheadModule], }) export class YourAppModule { }

A typeahead example that gets values from a static string[]

  • debounceTimeoperator
  • kicks in only if 2+ characters typed
  • limits to 10 results
template.html
<div class="form-control-wrapper form-floating mb-3"> <input id="typeahead-basic" placeholder=" " type="text" class="form-control form-control-lg" [(ngModel)]="model" [ngbTypeahead]="search" /> <label for="typeahead-basic" class="form-label">Search for a US state</label> </div> <hr /> <pre>Model: {{ model | json }}</pre>
component.ts
import { Component } from '@angular/core'; import { NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstrap'; import { Observable, OperatorFunction } from 'rxjs'; import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators'; import { FormsModule } from '@angular/forms'; import { JsonPipe } from '@angular/common'; const states = [ 'Alabama', 'Alaska', 'American Samoa', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District Of Columbia', 'Federated States Of Micronesia', 'Florida', 'Georgia', 'Guam', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Marshall Islands', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Northern Mariana Islands', 'Ohio', 'Oklahoma', 'Oregon', 'Palau', 'Pennsylvania', 'Puerto Rico', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virgin Islands', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming', ]; @Component({ selector: 'ngbd-typeahead-basic', standalone: true, imports: [NgbTypeaheadModule, FormsModule, JsonPipe], templateUrl: './typeahead-basic.html', styles: `.form-control { width: 300px; }`, }) export class NgbdTypeaheadBasic { model: any; search: OperatorFunction<string, readonly string[]> = (text$: Observable<string>) => text$.pipe( debounceTime(200), distinctUntilChanged(), map(term => term.length < 2 ? [] : states.filter(v => v.toLowerCase().indexOf(term.toLowerCase()) > -1).slice(0, 10), ), ); }