Loading...
Loading...
Implement the Syncfusion Angular MultiSelect Dropdown component (ejs-multiselect) for multi-value selection with checkbox support, tag/chip inputs, and searchable lists. Use this when building multi-select dropdowns, checkbox selection lists, or tag-based input fields. This skill covers filtering, CheckBoxSelection mode, cascading dropdowns, and data binding for the MultiSelect component.
npx skill4agent add syncfusion/angular-ui-components-skills syncfusion-angular-multi-selectejs-multiselect| Mode | Behavior | Use When |
|---|---|---|
| Selected items shown as chips in input | Standard multi-select |
| Same as Default, explicit box display | Visual clarity needed |
| Selected items as comma-separated text | Space-constrained layouts |
| Popup shows checkboxes per item | Bulk selection workflows |
ng add<ejs-multiselect>fieldstextvaluegroupByiconCssdisabledallowObjectBindingmodeCheckBoxSelectionshowSelectAllmaximumSelectionLengthtaggingallowCustomValuefields.disableddisableItem()addTagOnBlurchangeOnBlurallowFilteringfilteringupdateData()filterTypestartsWithcontainsendsWithitemTemplateng-templatevalueTemplategroupTemplateheaderTemplatefooterTemplatenoRecordsTemplateactionFailureTemplatefields.groupByenableGroupCheckBoxchangeFormsModulengModelReactiveFormsModuleFormGroupFormControlformControlNameenableVirtualizationallowResizeiconCssL10n.load()CheckBoxSelectionServiceng add @syncfusion/ej2-angular-dropdowns// app.component.ts — Standalone Angular 19+
import { Component } from '@angular/core';
import { MultiSelectModule } from '@syncfusion/ej2-angular-dropdowns';
@Component({
standalone: true,
imports: [MultiSelectModule],
selector: 'app-root',
template: `
<ejs-multiselect
[dataSource]="skills"
[fields]="fields"
placeholder="Select skills"
[(value)]="selectedSkills"
(change)="onChange($event)">
</ejs-multiselect>
`
})
export class AppComponent {
public skills = [
{ id: 1, name: 'Angular' },
{ id: 2, name: 'React' },
{ id: 3, name: 'TypeScript' },
{ id: 4, name: 'Node.js' },
];
public fields = { text: 'name', value: 'id' };
public selectedSkills: number[] = [1, 3]; // pre-select Angular & TypeScript
onChange(args: any): void {
console.log('Selected IDs:', args.value);
}
}/* styles.css */
@import '@syncfusion/ej2-base/styles/material3.css';
@import '@syncfusion/ej2-buttons/styles/material3.css';
@import '@syncfusion/ej2-inputs/styles/material3.css';
@import '@syncfusion/ej2-lists/styles/material3.css';
@import '@syncfusion/ej2-popups/styles/material3.css';
@import '@syncfusion/ej2-dropdowns/styles/material3.css';
@import '@syncfusion/ej2-angular-dropdowns/styles/material3.css';import { MultiSelectModule, CheckBoxSelectionService } from '@syncfusion/ej2-angular-dropdowns';
@Component({
standalone: true,
imports: [MultiSelectModule],
providers: [CheckBoxSelectionService],
template: `
<ejs-multiselect
[dataSource]="items"
mode="CheckBox"
[showSelectAll]="true"
selectAllText="Select All"
unSelectAllText="Unselect All"
[maximumSelectionLength]="5">
</ejs-multiselect>
`
})template: `
<ejs-multiselect
[dataSource]="data"
[allowFiltering]="true"
filterType="contains"
(filtering)="onFilter($event)">
</ejs-multiselect>
`
onFilter(args: FilteringEventArgs): void {
const query = new Query().where('name', 'contains', args.text, true);
args.updateData(this.data, query);
}import { ReactiveFormsModule, FormControl } from '@angular/forms';
// In component:
public skillsControl = new FormControl([1, 3]); // pre-selected IDs
// In template:
// <ejs-multiselect [formControl]="skillsControl" [dataSource]="skills" [fields]="fields">
// </ejs-multiselect>| Property | Type | Purpose |
|---|---|---|
| | Items to display |
| | Maps |
| | Currently selected values (use |
| | |
| | Enables search within the dropdown |
| | |
| | Shows Select All in CheckBox mode |
| | Caps the number of selectable items |
| | Lets users add values not in the list |
| | Optimizes rendering for large lists |
| | Constrains popup dimensions |
| | Lets users drag-resize the popup |
| | Input hint text |