Skip to content

Combobox / MultiSelect

<ax-combobox> is a single- or multi-select with type-to-filter, a CDK-overlay dropdown, and ControlValueAccessor. MultiSelect = Combobox + chips: add [multiple] [chips] to render the selection as removable chips in the trigger.

import { AxComboboxComponent, type ComboboxOption } from '@axisui-ng/forms';
<!-- single select -->
<ax-combobox [options]="countries" [(value)]="country" placeholder="Country" />
<!-- multi-select, comma-joined label -->
<ax-combobox [options]="countries" [(value)]="picked" multiple placeholder="Countries" />
<!-- MultiSelect: removable chips in the trigger -->
<ax-combobox [options]="countries" [(value)]="picked" multiple chips ariaLabel="Countries" />
countries: ComboboxOption[] = [
{ value: 'us', label: 'United States' },
{ value: 'ca', label: 'Canada', disabled: true },
];
InputTypeDefaultNotes
optionsComboboxOption[]Required. { value; label; disabled? }.
valuemodel<string | string[] | null>nullstring (single) or string[] (multiple).
multiplebooleanfalseMulti-select with checkmarks.
chipsbooleanfalseWith multiple, render the selection as removable chips (MultiSelect).
placeholderstring''Shown when empty.
ariaLabelstring''Trigger label (falls back to the selection/placeholder).
disabledbooleanfalseAlso set by setDisabledState from a form.
OutputPayloadNotes
searchChangestringThe filter text — wire it up for server-side filtering.

role="combobox" trigger with aria-expanded + aria-controls; the dropdown is a role="listbox" (aria-multiselectable when multiple) of role="option"s. Keyboard: ArrowDown/Enter open, Escape closes; ArrowUp/Down/Home/End move the active option; Enter selects. In chips mode the trigger is a focusable div[role="combobox"] (so chip remove buttons can nest); removing a chip filters the value without opening the panel.

Interactive examples live in Storybook under Forms / Combobox. Run pnpm storybook to explore them.