mcpField
S
syncfusion-angular-accordion

syncfusion-angular-accordion

github.com/syncfusion设计与 UI0268 次安装1 周前更新
代码仓库

关于 syncfusion-angular-accordion

面向 Angular 开发者的 Syncfusion Accordion 技能,用于构建可折叠内容面板。它涵盖展开模式、数据绑定、动态内容、动画和嵌套结构。

主要功能

  1. 01单项或多项展开模式
  2. 02数组与 OData 数据绑定
  3. 03运行时添加、移除和更新项目
  4. 04处理展开、折叠和点击事件
  5. 05自定义过渡动画
  6. 06构建嵌套手风琴结构

适用场景

  1. 01构建可展开的常见问题页面
  2. 02制作带验证步骤的多步向导
  3. 03按类别组织设置面板
  4. 04创建分层导航菜单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/angular-ui-components-skills --skill syncfusion-angular-accordion

安装后在 Claude Code 中输入/syncfusion-angular-accordion确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-features.md
data-binding.md
dynamic-loading-and-interactions.md
expand-modes.md
getting-started.md
use-cases-patterns.md

详细介绍

实现 Syncfusion Angular Accordion 组件

何时使用此技能

在以下情况下使用此技能:

  • 创建可折叠内容面板 - 将相关内容整理到可展开的分区中,折叠后节省空间
  • 构建分步向导 - 创建多步表单或工作流,让用户逐步浏览 Accordion 项目
  • 实现常见问题解答区 - 展示常见问题,并提供可展开的答案
  • 创建导航菜单 - 构建分层菜单或导航结构,其中包含可展开的嵌套项目
  • 动态加载内容 - 在用户展开 Accordion 项目时按需获取并显示内容
  • 添加自定义动画 - 通过流畅的展开/折叠过渡效果提升用户体验
  • 整理复杂数据 - 通过可展开的类别和子类别展示结构化数据

组件概述

Syncfusion Angular Accordion 组件会显示垂直可折叠的内容面板,用户可一次展开一个或多个分区。主要功能包括:

  • 单项/多项展开模式 - 控制是否可同时打开一个或多个项目
  • 数据绑定 - 从数组或 OData 服务绑定 Accordion 项目
  • 动态项目管理 - 在运行时添加、删除或更新项目
  • 事件处理 - 响应展开、折叠和点击事件
  • 自定义动画 - 使用自定义效果和时长配置流畅的过渡效果
  • 嵌套 Accordion - 创建分层 Accordion 结构,用于复杂导航
  • TreeView 集成 - 嵌入 TreeView 等其他组件,实现高级导航
  • 内容投影 - 使用 Angular 的 ng-content 创建可复用的内容组件

文档目录总览

快速导航至文档:

  1. 入门指南 - 安装、设置和基本初始化
  2. 展开模式 - 单项与多项展开模式及其配置
  3. 数据绑定 - 数据源、OData、REST API 和刷新策略
  4. 动态加载与交互 - 事件、方法和动态项目管理
  5. 高级功能 - 动画、嵌套 Accordion、样式和 RTL
  6. 用例与模式 - 实际实现和模式

文档与导航指南

入门指南

📄 阅读: references/getting-started.md

适用场景:

  • 设置首个 Accordion 组件
  • 安装所需的软件包和依赖项
  • 了解 CSS 导入和主题配置
  • 学习基本初始化方法(基于模板、项目数组、HTML 元素)
  • 创建首个可运行示例
展开模式

📄 阅读: references/expand-modes.md

适用场景:

  • 决定用户应展开一个还是多个项目
  • 配置单项模式(一次只打开一个项目)
  • 使用多项模式同时打开多个项目
  • 为用例选择合适的模式
  • 处理大型数据集时的性能问题
数据绑定

📄 阅读: references/data-binding.md

适用场景:

  • 从外部数据源绑定 Accordion 数据
  • 使用 DataManager 从 OData 服务获取数据
  • 将数据属性映射到标题和内容
  • 使用结构化数据数组
  • 在数据更新后刷新 Accordion 内容
动态加载和交互

📄 阅读: references/dynamic-loading-and-interactions.md

适用场景:

  • 在运行时动态添加项目
  • 处理展开/折叠/点击事件
  • 通过 AJAX 或远程请求加载内容
  • 实现由复选框控制的展开
  • 阻止项目折叠或强制项目保持展开
  • 使用 ng-content 创建可复用的内容组件
  • 创建始终展开的手风琴项
高级功能

📄 阅读: references/advanced-features.md

适用场景:

  • 使用效果和缓动自定义展开/折叠动画
  • 为分层结构创建嵌套手风琴
  • 在手风琴项中集成 TreeView 组件
  • 应用自定义 CSS 样式和主题
  • 启用 RTL(从右到左)支持
  • 设置标题、项目和展开/折叠图标的样式
用例和模式

📄 阅读: references/use-cases-patterns.md

适用场景:

  • 遵循最佳实践构建 FAQ 部分
  • 创建带验证的多步向导表单
  • 设计分类设置面板
  • 构建导航菜单和组织层级结构
  • 显示帮助和文档部分
  • 学习真实场景中的模式和代码组织策略

快速入门示例

包含三个项目的基本模板式手风琴:

import { Component } from '@angular/core';
import { AccordionModule } from '@syncfusion/ej2-angular-navigations';

@Component({
  standalone: true,
  selector: 'app-root',
  imports: [AccordionModule],
  template: `
    <ejs-accordion>
      <e-accordionitems>
        <e-accordionitem expanded="true">
          <ng-template #header>
            <div>ASP.NET</div>
          </ng-template>
          <ng-template #content>
            <div>Microsoft ASP.NET is a set of technologies in the Microsoft .NET Framework for building Web applications and XML Web services.</div>
          </ng-template>
        </e-accordionitem>
        
        <e-accordionitem>
          <ng-template #header>
            <div>ASP.NET MVC</div>
          </ng-template>
          <ng-template #content>
            <div>The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller.</div>
          </ng-template>
        </e-accordionitem>
        
        <e-accordionitem>
          <ng-template #header>
            <div>JavaScript</div>
          </ng-template>
          <ng-template #content>
            <div>JavaScript (JS) is an interpreted computer programming language used for creating interactive web pages and applications.</div>
          </ng-template>
        </e-accordionitem>
      </e-accordionitems>
    </ejs-accordion>
  `
})
export class AppComponent {}

使用项目数组方式:

import { Component } from '@angular/core';
import { AccordionModule } from '@syncfusion/ej2-angular-navigations';

@Component({
  standalone: true,
  selector: 'app-root',
  imports: [AccordionModule],
  template: `<ejs-accordion [items]="accordionItems"></ejs-accordion>`
})
export class AppComponent {
  public accordionItems = [
    {
      header: 'ASP.NET',
      content: 'Microsoft ASP.NET is a set of technologies in the Microsoft .NET Framework for building Web applications.',
      expanded: true
    },
    {
      header: 'ASP.NET MVC',
      content: 'The Model-View-Controller (MVC) architectural pattern separates an application into three main components.'
    },
    {
      header: 'JavaScript',
      content: 'JavaScript (JS) is an interpreted computer programming language used for creating interactive web pages.'
    }
  ];
}

常见模式

模式 1:单项展开模式(一次展开一项)

适用于希望手风琴一次只展开一项的场景,例如导航菜单和设置面板。

<ejs-accordion expandMode="Single">
  
</ejs-accordion>
模式 2:动态添加项目

根据用户操作或数据加载,以编程方式添加项目。

@ViewChild('accordion') accordionObj?: AccordionComponent;

addNewItem() {
  this.accordionObj?.addItem({
    header: 'New Item',
    content: 'New content here'
  });
}
模式 3:事件驱动工作流

响应手风琴事件,以执行验证或数据加载等自定义逻辑。

<ejs-accordion (expanding)="onExpanding($event)" (expanded)="onExpanded($event)">
  
</ejs-accordion>

onExpanding(event: ExpandEventArgs) {
  // Prevent collapse of currently open item
  event.cancel = true;
}
模式 4:展开/折叠动画

添加流畅的动画,以提供更好的视觉反馈。

<ejs-accordion [animation]="animationSettings">
  
</ejs-accordion>

animationSettings = {
  expand: { effect: 'SlideDown', duration: 400, easing: 'ease' },
  collapse: { effect: 'SlideUp', duration: 400, easing: 'ease' }
};

完整 API 参考

有关各个 API 元素的详细文档及可运行的代码示例,请参阅参考文件。以下是全面摘要。

Accordion 组件属性(共 13 项)
属性类型默认值用途了解更多
itemsAccordionItemModel[][]Accordion 项集合数据绑定
dataSourceDataManager | Object[]null用于绑定项目的数据源数据绑定
expandMode'Single' | 'Multiple''Multiple'控制单项或多项展开展开模式
expandedIndicesnumber[][]初始展开项目的索引展开模式
animationAccordionAnimationSettingsModel{ expand: { effect: 'SlideDown', duration: 400, easing: 'linear' }, collapse: { effect: 'SlideUp', duration: 400, easing: 'linear' } }展开/折叠动画设置高级功能
headerTemplatestring | Functionnull项目标题模板入门指南
itemTemplatestring | Functionnull项目内容模板入门指南
heightstring | numberauto组件高度入门指南
widthstring | number100%组件宽度入门指南
enableRtlbooleanfalse启用从右向左的布局高级功能
enablePersistencebooleanfalse将展开状态保存到 localStorage入门指南
enableHtmlSanitizerbooleantrue清理内容中的 HTML数据绑定
localestring'en-US'本地化区域设置高级功能
AccordionItem 属性(共 8 项)
属性类型默认值用途了解更多
headerstring | HTMLElement''项目标题文本或元素入门指南
contentstring | HTMLElement | Function''项目内容文本、HTML 或函数入门指南
expandedbooleanfalse初始展开状态展开模式
disabledbooleanfalse禁用项目交互动态加载
visiblebooleantrue项目可见性动态加载
cssClassstring''项目的自定义 CSS 类高级功能
iconCssstring''Font Awesome/Bootstrap 图标类入门指南
idstring''项目的唯一标识符入门指南
方法(共 7 个)
方法签名用途了解更多
addItem()addItem(item: AccordionItemModel | Object[], index?: number): void在指定索引处或末尾添加项目动态加载
removeItem()removeItem(index: number): void移除指定索引处的项目动态加载
expandItem()expandItem(isExpand: boolean, index?: number): void展开/折叠指定项目或所有项目动态加载,展开模式
enableItem()enableItem(index: number, isEnable: boolean): void启用/禁用项目交互动态加载
hideItem()hideItem(index: number, isHidden?: boolean): void显示/隐藏项目,但不将其移除动态加载
select()select(index: number): void将焦点设为项目标题动态加载
destroy()destroy(): void清理组件资源动态加载
事件(共 5 个)
事件事件参数触发时机了解更多
createdEvent组件渲染完成动态加载
expandingExpandEventArgs项目开始展开时(可取消)动态加载
expandedExpandEventArgs项目完成展开时动态加载
clickedAccordionClickArgs点击标题或内容时动态加载
destroyedEvent组件销毁时动态加载
动画效果(6 种)
效果展开行为折叠行为适用场景
SlideDown内容向下滑入不适用(与 SlideUp 配合使用)默认效果,动画流畅
SlideUp不适用(与 SlideDown 配合使用)内容向上滑出默认折叠效果
FadeDown内容淡入并滑入不适用(与 FadeUp 配合使用)专业外观
FadeUp不适用(与 FadeDown 配合使用)内容淡出并滑出专业外观
Zoom内容放大内容缩小引人注目的效果
None即时完成即时完成性能最佳
缓动函数(5 种)
缓动方式曲线适用场景典型用途
linear匀速简单动画直接展开/折叠
ease开始和结束较慢,中间较快默认行为感觉均衡
ease-in加速折叠操作关闭时逐渐加速
ease-out减速展开操作打开时逐渐减速
ease-in-out开始和结束较慢对称动画两个方向的时长相同

常见用例

  1. 常见问题解答 - 可展开的问题/答案对,采用单项展开模式
  2. 多步骤向导 - 按顺序排列的项目,支持验证和条件启用
  3. 设置面板 - 按可展开的分区组织各类设置
  4. 导航菜单 - 使用嵌套手风琴组件实现分层导航
  5. 数据浏览器 - 支持动态加载的可展开数据类别
  6. 帮助文档 - 按主题组织的可折叠帮助分区

故障排查速查表

项目无法展开?

  • 检查项目是否通过 enableItem(false, index) 禁用
  • 确认 expandMode 设置符合你的需求

内容未加载?

  • 确保已设置 header 和 content 属性
  • 检查样式中是否包含 CSS 导入语句

动画不流畅?

  • 确认 CSS 已正确导入
  • 检查浏览器控制台是否有错误
  • 考虑为运行较慢的设备缩短动画时长

多个项目意外关闭?

  • 如果需要同时展开多个项目,请确认 expandMode 设置为 'Multiple'
  • 检查事件处理程序是否调用了 e.cancel = true

如需了解任何方面的详细信息,请参阅上方的文档和导航指南。如果你是首次使用此组件,请从 getting-started.md 开始。

评论

支持 Markdown