syncfusion-angular-drop-down-list
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSyncfusion Angular DropDownList
Syncfusion Angular DropDownList
The DropDownList component allows users to select a single value from a predefined list. It supports local and remote data sources, filtering, grouping, custom templates, virtualization for large datasets, and full Angular forms integration.
DropDownList组件允许用户从预定义列表中选择单个值。它支持本地和远程数据源、筛选、分组、自定义模板、针对大型数据集的虚拟化,以及完整的Angular表单集成。
Navigation Guide
导航指南
Getting Started
快速入门
📄 Read: references/getting-started.md
- Installation and Angular CLI setup
- Installing
@syncfusion/ej2-angular-dropdowns - CSS/theme imports for Material3
- Adding to the template
<ejs-dropdownlist> - Basic data binding with
[dataSource] - Popup height/width configuration
- Two-way binding with
[(value)]
📄 阅读: references/getting-started.md
- 安装与Angular CLI配置
- 安装
@syncfusion/ej2-angular-dropdowns - Material3的CSS/主题导入
- 在模板中添加
<ejs-dropdownlist> - 使用进行基础数据绑定
[dataSource] - 弹出框高度/宽度配置
- 使用实现双向绑定
[(value)]
Data Binding
数据绑定
📄 Read: references/data-binding.md
- Binding primitive arrays (strings, numbers)
- Binding arrays of objects with mapping
[fields] - Binding to nested/complex objects
- Remote data via (OData, Web API)
DataManager - Async pipe with Observable data streams
- Value binding (primitive and object types with )
allowObjectBinding
📄 阅读: references/data-binding.md
- 绑定原始数组(字符串、数字)
- 使用映射绑定对象数组
[fields] - 绑定嵌套/复杂对象
- 通过绑定远程数据(OData、Web API)
DataManager - 结合Async pipe与Observable数据流
- 值绑定(支持原始类型和开启后的对象类型)
allowObjectBinding
Filtering
筛选功能
📄 Read: references/filtering.md
- Enabling search with
[allowFiltering] - Using the event and
filteringmethodupdateData() - Minimum character threshold before filtering starts
- Filter types: ,
contains,startsWithendsWith - Case-sensitive filtering
- Diacritics/accent-insensitive filtering
- Debounce delay for performance optimization
📄 阅读: references/filtering.md
- 通过启用搜索功能
[allowFiltering] - 使用事件和
filtering方法updateData() - 设置筛选触发的最小字符阈值
- 筛选类型:、
contains、startsWithendsWith - 区分大小写的筛选
- 忽略变音符号的筛选
- 防抖延迟优化性能
Templates
模板定制
📄 Read: references/templates.md
- Item template: customize each list item
- Value template: customize the selected value display
- Group template: customize group header appearance
- Header template: static element at popup top
- Footer template: static element at popup bottom
- No-records template: empty state display
- Action failure template: error state display
📄 阅读: references/templates.md
- 项模板:自定义每个列表项
- 值模板:自定义选中值的显示样式
- 分组模板:自定义分组头部外观
- 头部模板:弹出框顶部的静态元素
- 底部模板:弹出框底部的静态元素
- 无数据模板:空状态显示
- 操作失败模板:错误状态显示
Grouping & Virtualization
分组与虚拟化
📄 Read: references/grouping-and-virtualization.md
- Grouping items with field
groupBy - Inline and fixed floating group headers
- Virtual scrolling with for large lists
[enableVirtualization] - Virtual scrolling with remote data
- Combining filtering and virtualization
- Customizing item count in virtual mode
📄 阅读: references/grouping-and-virtualization.md
- 使用字段对项进行分组
groupBy - 内联与固定悬浮分组头部
- 为大型列表启用实现虚拟滚动
[enableVirtualization] - 结合远程数据的虚拟滚动
- 筛选与虚拟化结合使用
- 自定义虚拟模式下的项数量
Disabled Items & Forms
禁用项与表单集成
📄 Read: references/disabled-items-and-forms.md
- Disabling specific items via
fields.disabled - Dynamic method (by value, index, or element)
disableItem() - Disabling the entire component with
[enabled]="false" - Template-driven forms with
[(ngModel)] - Reactive forms with and
FormControlFormGroup
📄 阅读: references/disabled-items-and-forms.md
- 通过禁用特定项
fields.disabled - 动态方法(按值、索引或元素)
disableItem() - 通过禁用整个组件
[enabled]="false" - 结合的模板驱动表单
[(ngModel)] - 结合和
FormControl的响应式表单FormGroup
Customization & Styling
定制与样式设置
📄 Read: references/customization-and-styling.md
- CSS overrides for wrapper, icon, focus states
- Outline theme focus customization
- Popup appearance and list item styles
- Float label and placeholder styling
- Mandatory asterisk pattern
- Localization with class
L10n - RTL (right-to-left) support
📄 阅读: references/customization-and-styling.md
- 对容器、图标、焦点状态进行CSS重写
- 轮廓主题的焦点定制
- 弹出框外观与列表项样式
- 浮动标签与占位符样式
- 必填项星号样式
- 使用类实现本地化
L10n - RTL(从右到左)支持
How-To Recipes
操作指南
📄 Read: references/how-to.md
- Add / remove / clear items dynamically
- Close popup programmatically
- Cascading DropDownLists
- Customize group header template
- Highlight filtered characters
- Incremental search behavior
- Modify remote data results
- Remote data item count display
- Tooltip on list items
- Value change event handling
- Icon support in list items
📄 阅读: references/how-to.md
- 动态添加/删除/清空项
- 以编程方式关闭弹出框
- 级联DropDownList
- 自定义分组头部模板
- 高亮筛选字符
- 增量搜索行为
- 修改远程数据结果
- 远程数据项数量显示
- 列表项的提示框
- 值变更事件处理
- 列表项中的图标支持
Quick Start Example
快速入门示例
typescript
import { 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);
}
}typescript
import { 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);
}
}Common Patterns
常见模式
Searchable Dropdown
可搜索下拉菜单
typescript
// 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);
}typescript
// 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);
}Remote Data Dropdown
远程数据下拉菜单
typescript
import { DataManager, ODataV4Adaptor, Query } from '@syncfusion/ej2-data';
public remoteData: DataManager = new DataManager({
url: 'https://services.odata.org/V4/Northwind/Northwind.svc/Customers',
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">typescript
import { DataManager, ODataV4Adaptor, Query } from '@syncfusion/ej2-data';
public remoteData: DataManager = new DataManager({
url: 'https://services.odata.org/V4/Northwind/Northwind.svc/Customers',
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">Reactive Form Integration
响应式表单集成
typescript
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>typescript
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>Key Props
核心属性
| 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 |
| 属性 | 类型 | 描述 |
|---|---|---|
| | 列表数据源 |
| | 映射文本、值、groupBy、disabled、iconCss |
| | 选中值(支持双向绑定) |
| | 输入框占位文本 |
| | 启用弹出框中的搜索框 |
| | 筛选匹配策略 |
| | 为大型列表启用虚拟滚动 |
| | 弹出框尺寸 |
| | 启用/禁用整个组件 |
| | 绑定完整对象作为值 |
| | 不区分大小写的筛选(默认:true) |
| | 忽略变音符号的筛选 |
| | 筛选触发前的延迟(毫秒) |
| | 列表项模板 |
| | 选中值显示模板 |
| | 空状态提示文本 |
Common Use Cases
常见使用场景
Form field with validation → See references/disabled-items-and-forms.md
Large list (1000+ items) → Enable — see references/grouping-and-virtualization.md
[enableVirtualization]="true"Country/State/City cascading → See references/how-to.md
Custom item rendering (icons, multi-column) → See references/templates.md
Remote API data → See references/data-binding.md
带验证的表单字段 → 查看references/disabled-items-and-forms.md
大型列表(1000+项) → 启用 — 查看references/grouping-and-virtualization.md
[enableVirtualization]="true"国家/州/城市级联 → 查看references/how-to.md
自定义项渲染(图标、多列)→ 查看references/templates.md
远程API数据 → 查看references/data-binding.md