NEURALNG
FORMSBETA

AutoComplete

An editable Signal-first combobox for local filtering, race-safe remote suggestions, typed templates and every Angular Forms API.

Stable input focusTop-layer overlayHeadless ready

GET STARTED

Import

Use the concise public NeuralAutoComplete export from its tree-shakable entry point.

app.ts TypeScript
import {
  NeuralAutoComplete,
  NeuralAutoCompleteOptionTemplate,
} from '@neural-ng/core/auto-complete';

@Component({ imports: [NeuralAutoComplete, NeuralAutoCompleteOptionTemplate] })

Local suggestions and nested paths

Map label, value, disabled and group fields without changing source objects. Search can span comma-separated nested paths; Paris is disabled.

Committed id: none
Type a city or airport code.

Free text mode

valueMode="text" keeps the committed form value synchronized with editable text. Disable force selection to accept values outside the suggestion list.

Value: Agent workspace

Remote and race-safe

Remote mode never filters supplied results. Every debounced request carries an increasing id so stale responses can be discarded deterministically.

Request 0 · 0 results

Angular Forms

The same nullable committed-value model implements Signal Forms, Reactive Forms and template-driven Forms. Programmatic writes do not emit user-only selection events.

Signal Forms
Istanbul
Reactive Forms
Ankara
NgModel
Amsterdam

Typed content and icon templates

Option, group, empty, loading, dropdown icon and clear icon contexts are all type guarded. The example replaces both action icons while preserving their accessible buttons.

States, labels and Field composition

Disabled, readonly, loading, empty, required, pending and invalid are distinct. Locale messages supply placeholder and action labels unless a component-level override is set.

Selection is required.

Semantic events

Models describe state; semantic outputs describe user intent and popup lifecycle. No legacy on-prefixed aliases are needed.

events.html HTML
<neural-auto-complete
  [(value)]="value"
  [(query)]="query"
  (search)="searched($event)"
  (selected)="selected($event)"
  (cleared)="cleared($event)"
  (opened)="opened()"
  (closed)="closed()"
  (invalidInput)="invalid($event)"
  (touch)="touched()"
/>

Unstyled and typed class slots

Headless mode keeps structure, top-layer positioning, keyboard behavior, localization and Forms while consumer classes own every visible pixel.

Beta boundaries

Included

Single option or text value, local/remote data, groups, nested paths, typed templates, localization, Forms and headless ownership.

Use another primitive

Use MultiSelect for chips/multiple values and Select with virtual scroll for very large fixed option sets. Grid popups and inline creation are not Beta behavior.