用途
Syncfusion Angular ComboBox 是一个 Angular 下拉选择组件,用于从预定义选项列表中单选一项。当启用 allowCustom 时,用户也可以输入列表中不存在的自定义值。组件同时支持边输入边搜索过滤、按类别分组,以及通过模板自定义条目、分组头、页眉和页脚的显示。
主要能力
- 选择方式:从预定义列表中选择单项,或在 allowCustom 开启时输入自定义值。
- 数据源:支持本地数组、远程 DataManager、OData、Web API 以及异步数据;可通过 fields 映射 text 与 value 字段,适配复杂数据结构。
- 过滤与搜索:通过 allowFiltering 启用过滤,可配置过滤策略(StartsWith、Contains、EndsWith 等),支持区分大小写过滤、忽略变音符号过滤、防抖延迟以优化远程请求、最小过滤字符数要求,以及基于远程查询的自定义过滤。
- 分组与模板:使用 groupBy 字段按类别分组;支持条目模板、分组头模板(内联与固定)、页脚模板,并可组合多个模板。
- 高级功能:可禁用特定条目或整个组件、只读模式、面向大量数据的虚拟滚动、动态调整大小、允许自定义值、样式与主题集成、RTL(阿拉伯语/希伯来语)支持。
- 表单支持:支持模板驱动表单(ngModel)双向绑定、响应式表单(FormControl 与 FormGroup)、内置与自定义验证器、表单提交与验证状态、表单上下文中的禁用状态、错误信息展示模式。
- 无障碍与本地化:符合 WCAG 2.2、Section 508 与 ADA;支持键盘导航(方向键、Tab、Enter、Escape)、屏幕阅读器 ARIA 属性、焦点管理与视觉指示;支持多语言本地化字符串与 RTL 语言。
使用方式
安装 @syncfusion/ej2-angular-dropdowns 包,在 Angular 21+ 项目中使用独立组件,导入所需模块与 CSS 主题。最小示例:
// app.component.ts
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ComboBoxComponent, ComboBoxModule } from '@syncfusion/ej2-angular-dropdowns';
@Component({
selector: 'app-root',
standalone: true,
imports: [CommonModule, ComboBoxModule],
template: `
<ejs-combobox
[dataSource]="data"
fields="{ text: 'text', value: 'id' }"
placeholder="Select a language"
[(ngModel)]="selectedValue">
</ejs-combobox>
`
})
export class AppComponent {
selectedValue = '';
data = [
{ id: '1', text: 'JavaScript' },
{ id: '2', text: 'TypeScript' },
{ id: '3', text: 'Angular' },
{ id: '4', text: 'React' }
];
}
常用属性包括:dataSource(Array | DataManager,默认 [])、fields(对象,默认 { text, value })、placeholder(string,默认 '')、allowFiltering(boolean,默认 false)、allowCustom(boolean,默认 false)、readonly(boolean,默认 false)、enabled(boolean,默认 true)、[(ngModel)](双向值绑定)。高级属性包括 itemTemplate、groupTemplate、footerTemplate、enableVirtualization、groupBy、filterType、debounceDelay。
关键事件:change(选中值变化时)、filtering(用户输入触发过滤查询时)、select(选中条目时)、focus(获得焦点时)、blur(失去焦点时)。
常见模式:
- 自动填充建议:设置 [autofill]="true"、[allowFiltering]="true"、filterType="StartsWith",适用于技能、标签、邮箱域名等场景。
- 级联下拉:如国家 → 州 → 城市,在上级 change 事件中更新下级数据源。
- 带图标的分组条目:fields 中配置 text、value、groupBy、iconCss。
- 可调整大小的下拉:设置 [allowResize]="true" 并配合 itemTemplate 展示丰富内容。
适用场景
适用于 Angular 应用中需要单选下拉、可搜索选择、分组展示、表单集成、大数据量列表(1 万条以上,配合虚拟滚动)以及需要无障碍合规与本地化的界面。
限制
资料未提供收费、价格、平台兼容性细节、性能指标或效果承诺等信息,暂未提供。