Loading...
Loading...
Implement the Syncfusion Angular DropDownList component for single-value selection from a predefined list. Use this when users need a dropdown selector, searchable dropdown, or cascading dropdowns in Angular. This skill covers data binding, filtering, templates, grouping, virtualization, and form integration using @syncfusion/ej2-angular-dropdowns.
npx skill4agent add syncfusion/angular-ui-components-skills syncfusion-angular-dropdownlist@syncfusion/ej2-angular-dropdowns<ejs-dropdownlist>[dataSource][(value)][fields]DataManagerallowObjectBinding[allowFiltering]filteringupdateData()containsstartsWithendsWithgroupBy[enableVirtualization]fields.disableddisableItem()[enabled]="false"[(ngModel)]FormControlFormGroupL10nFieldSettingsModelChangeEventArgsSelectEventArgsPopupEventArgsFilteringEventArgsimport { Component, OnInit } from '@angular/core';
import { DropDownListModule } from '@syncfusion/ej2-angular-dropdowns';
@Component({
standalone: true,
imports: [DropDownListModule],
selector: 'app-root',
template: `
<ejs-dropdownlist
id="ddl"
[dataSource]="sports"
[fields]="fields"
placeholder="Select a sport"
[(value)]="selectedValue"
(change)="onChange($event)">
</ejs-dropdownlist>
<p>Selected: {{ selectedValue }}</p>
`
})
export class AppComponent implements OnInit {
public sports: { id: number; name: string }[] = [];
public fields = { text: 'name', value: 'id' };
public selectedValue: number = 2;
ngOnInit() {
this.sports = [
{ id: 1, name: 'Badminton' },
{ id: 2, name: 'Cricket' },
{ id: 3, name: 'Football' },
{ id: 4, name: 'Tennis' }
];
}
onChange(args: any) {
console.log('Selected value:', args.value);
}
}// Enable filtering in template
// <ejs-dropdownlist [allowFiltering]="true" (filtering)="onFilter($event)">
import { FilteringEventArgs } from '@syncfusion/ej2-angular-dropdowns';
import { Query } from '@syncfusion/ej2-data';
onFilter(args: FilteringEventArgs) {
let query = new Query();
query = args.text !== ''
? query.where('name', 'contains', args.text, true)
: query;
args.updateData(this.sports, query);
}import { DataManager, ODataV4Adaptor, Query } from '@syncfusion/ej2-data';
public remoteData: DataManager = new DataManager({
url: 'https://your-api-endpoint.com/Customers', // replace with your own OData or Web API URL
adaptor: new ODataV4Adaptor(),
crossDomain: true
});
public remoteQuery = new Query().select(['CustomerID', 'ContactName']).take(6);
public remoteFields = { text: 'ContactName', value: 'CustomerID' };
// Template: <ejs-dropdownlist [dataSource]="remoteData" [query]="remoteQuery" [fields]="remoteFields">import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
import { DropDownListModule } from '@syncfusion/ej2-angular-dropdowns';
// In component:
form = this.fb.group({ sport: ['Cricket', Validators.required] });
// In template:
// <form [formGroup]="form">
// <ejs-dropdownlist formControlName="sport" [dataSource]="sports"></ejs-dropdownlist>
// </form>| Property | Type | Description |
|---|---|---|
| | Data for the list |
| | Maps text, value, groupBy, disabled, iconCss |
| | Selected value (supports two-way binding) |
| | Input placeholder text |
| | Enable search box in popup |
| | Filter match strategy |
| | Virtual scrolling for large lists |
| | Popup dimensions |
| | Enable/disable entire component |
| | Bind full object as value |
| | Case-insensitive filtering (default: true) |
| | Diacritics-insensitive filtering |
| | Delay (ms) before filter triggers |
| | Template for list items |
| | Template for selected value display |
| | Empty state message |
[enableVirtualization]="true"