Part of the
igniteui-angular-componentsskill hub. For app setup, providers, and import patterns — seesetup.md.
- Input Group
- Combo (Multi-Select Dropdown)
- Simple Combo (Single-Select)
- Select
- Date Picker
- Date Range Picker
- Time Picker
- Calendar
- Checkbox, Radio, Switch
- Slider
- Reactive Forms Integration
- Key Rules
Docs: Input Group
import { IGX_INPUT_GROUP_DIRECTIVES } from 'igniteui-angular/input-group';
import { IgxIconComponent } from 'igniteui-angular/icon';<igx-input-group type="border">
<igx-prefix><igx-icon>person</igx-icon></igx-prefix>
<label igxLabel>Username</label>
<input igxInput name="username" type="text" [(ngModel)]="username" />
<igx-suffix><igx-icon>clear</igx-icon></igx-suffix>
<igx-hint>Enter your username</igx-hint>
</igx-input-group>Types: line (default), border, box, search.
Docs: Combo Component
import { IgxComboComponent } from 'igniteui-angular/combo';<igx-combo
[data]="cities"
[valueKey]="'id'"
[displayKey]="'name'"
[groupKey]="'region'"
placeholder="Select cities"
[allowCustomValues]="false"
[(ngModel)]="selectedCityIds">
</igx-combo>Key inputs: [data], [valueKey], [displayKey], [groupKey], [placeholder], [allowCustomValues], [filterFunction], [itemsMaxHeight], [type].
Events: (opening), (opened), (closing), (closed), (selectionChanging), (addition), (searchInputUpdate).
Docs: Combo — Single Selection
import { IgxSimpleComboComponent } from 'igniteui-angular/simple-combo';<igx-simple-combo
[data]="countries"
[valueKey]="'code'"
[displayKey]="'name'"
placeholder="Select country"
[(ngModel)]="selectedCountry">
</igx-simple-combo>Same API as igx-combo but restricted to single selection.
Docs: Select Component
import { IgxSelectComponent, IgxSelectItemComponent } from 'igniteui-angular/select';<igx-select [(ngModel)]="selectedRole" placeholder="Choose role">
@for (role of roles; track role.id) {
<igx-select-item [value]="role.id">{{ role.name }}</igx-select-item>
}
</igx-select>Docs: Date Picker
import { IgxDatePickerComponent } from 'igniteui-angular/date-picker';<igx-date-picker
[(ngModel)]="selectedDate"
[minValue]="minDate"
[maxValue]="maxDate"
[hideOutsideDays]="true"
[displayMonthsCount]="2">
</igx-date-picker>Implements ControlValueAccessor and Validator. Works with both reactive and template-driven forms.
Docs: Date Range Picker
import { IgxDateRangePickerComponent, IgxDateRangeStartComponent, IgxDateRangeEndComponent } from 'igniteui-angular/date-picker';
import { IgxDateTimeEditorDirective } from 'igniteui-angular/directives';
import { IGX_INPUT_GROUP_DIRECTIVES } from 'igniteui-angular/input-group';
import { IgxIconComponent } from 'igniteui-angular/icon';
import { IgxPickerToggleComponent, IgxPickerClearComponent } from 'igniteui-angular/core';<igx-date-range-picker [(ngModel)]="dateRange">
<igx-date-range-start>
<input igxInput igxDateTimeEditor type="text" />
</igx-date-range-start>
<igx-date-range-end>
<input igxInput igxDateTimeEditor type="text" />
</igx-date-range-end>
</igx-date-range-picker>IgxDateRangePickerComponent is imported from igniteui-angular/date-picker.
In the two-input configuration:
- place the
inputdirectly insideigx-date-range-startandigx-date-range-end - use
igx-picker-toggle igxPrefixfor the calendar action - use
igx-picker-clear igxSuffixfor the clear action
A plain igx-prefix or igx-suffix with an igx-icon is decorative only and does not trigger picker actions.
Do not wrap the inputs in an additional igx-input-group.
Avoid these patterns in two-input mode:
-
<igx-prefix><igx-icon>calendar_today</igx-icon></igx-prefix> -
placing the toggle on only one input unless explicitly requested
Common two-input configuration with calendar toggles:
<igx-date-range-picker [(ngModel)]="dateRange">
<igx-date-range-start>
<igx-picker-toggle igxPrefix>
<igx-icon>calendar_today</igx-icon>
</igx-picker-toggle>
<label igxLabel>Start Date</label>
<input igxInput igxDateTimeEditor type="text" />
<igx-picker-clear igxSuffix>
<igx-icon>clear</igx-icon>
</igx-picker-clear>
</igx-date-range-start>
<igx-date-range-end>
<igx-picker-toggle igxPrefix>
<igx-icon>calendar_today</igx-icon>
</igx-picker-toggle>
<label igxLabel>End Date</label>
<input igxInput igxDateTimeEditor type="text" />
<igx-picker-clear igxSuffix>
<igx-icon>clear</igx-icon>
</igx-picker-clear>
</igx-date-range-end>
</igx-date-range-picker>Docs: Time Picker
import { IgxTimePickerComponent } from 'igniteui-angular/time-picker';<igx-time-picker
[(ngModel)]="selectedTime"
[inputFormat]="'HH:mm'"
[is24HourFormat]="true">
</igx-time-picker>Docs: Calendar Component
import { IgxCalendarComponent } from 'igniteui-angular/calendar';<igx-calendar
[(ngModel)]="selectedDate"
[selection]="'single'"
[hideOutsideDays]="true"
[weekStart]="1">
</igx-calendar>Selection modes: 'single', 'multi', 'range'.
Docs: Checkbox · Radio Button · Switch
import { IgxCheckboxComponent } from 'igniteui-angular/checkbox';
import { IgxRadioComponent, IgxRadioGroupDirective } from 'igniteui-angular/radio';
import { IgxSwitchComponent } from 'igniteui-angular/switch';<igx-checkbox [(ngModel)]="rememberMe">Remember me</igx-checkbox>
<igx-radio-group>
<igx-radio name="plan" value="basic" [(ngModel)]="plan">Basic</igx-radio>
<igx-radio name="plan" value="pro" [(ngModel)]="plan">Pro</igx-radio>
</igx-radio-group>
<igx-switch [(ngModel)]="darkMode">Dark mode</igx-switch>Docs: Slider Component
import { IgxSliderComponent, IgxSliderType } from 'igniteui-angular/slider';
public sliderType = IgxSliderType;
public priceRange = {
lower: 200,
upper: 800
};<!-- Single value -->
<igx-slider [minValue]="0" [maxValue]="100" [(ngModel)]="volume"></igx-slider>
<!-- Range slider -->
<igx-slider
[type]="sliderType.RANGE"
[minValue]="0"
[maxValue]="100"
[lowerBound]="20"
[upperBound]="80">
</igx-slider>All form controls implement ControlValueAccessor and work with both reactive and template-driven forms.
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FormGroup, FormControl, Validators, ReactiveFormsModule } from '@angular/forms';
import { IgxComboComponent } from 'igniteui-angular/combo';
import { IGX_INPUT_GROUP_DIRECTIVES } from 'igniteui-angular/input-group';
import { IgxDatePickerComponent } from 'igniteui-angular/date-picker';
import { IgxSelectComponent, IgxSelectItemComponent } from 'igniteui-angular/select';
@Component({
selector: 'app-my-form',
imports: [
ReactiveFormsModule,
IGX_INPUT_GROUP_DIRECTIVES,
IgxComboComponent,
IgxDatePickerComponent,
IgxSelectComponent,
IgxSelectItemComponent
],
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
<form [formGroup]="form" (ngSubmit)="submit()">
<igx-input-group>
<label igxLabel>Name</label>
<input igxInput formControlName="name" />
@if (form.controls.name.invalid && form.controls.name.touched) {
<igx-hint>Name is required</igx-hint>
}
</igx-input-group>
<igx-combo
[data]="skills"
formControlName="skills"
[valueKey]="'id'"
[displayKey]="'name'"
placeholder="Select skills">
</igx-combo>
<igx-date-picker formControlName="startDate"></igx-date-picker>
<igx-select formControlName="role" placeholder="Choose role">
@for (r of roles; track r.id) {
<igx-select-item [value]="r.id">{{ r.name }}</igx-select-item>
}
</igx-select>
</form>
`
})
export class MyFormComponent {
form = new FormGroup({
name: new FormControl('', Validators.required),
skills: new FormControl<number[]>([]),
startDate: new FormControl<Date | null>(null),
role: new FormControl<string | null>(null)
});
skills = [{ id: 1, name: 'Angular' }, { id: 2, name: 'TypeScript' }];
roles = [{ id: 'admin', name: 'Admin' }, { id: 'user', name: 'User' }];
submit() {
if (this.form.valid) {
console.log(this.form.value);
}
}
}- Always check
app.config.tsfirst — addprovideAnimations()before using Combo, Select, Date Picker, or any overlay component - Import from specific entry points — avoid the root
igniteui-angularbarrel - Date/Time pickers implement both
ControlValueAccessorandValidator— they integrate with reactive forms natively - For
igx-date-range-pickerwith separate start and end inputs, use this structure for both inputs:igx-picker-toggle igxPrefix, theninput igxInput igxDateTimeEditor, then optionaligx-picker-clear igxSuffix. - Do not use a plain
igx-prefix/igx-suffixicon for calendar or clear actions.
setup.md— App providers, architecture, all entry pointslayout.md— Tabs, Stepper, Accordion, Splitter, Navigation Drawerdata-display.md— List, Tree, Card and other display componentsfeedback.md— Dialog, Snackbar, Toast, Bannerdirectives.md— Button, Ripple, Tooltip, Drag and Drop