mcpField
S
syncfusion-angular-menu

syncfusion-angular-menu

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

关于 syncfusion-angular-menu

syncfusion-angular-menu 是面向 Angular 的 Syncfusion Menu 组件指南,涵盖导航菜单的实现、数据绑定和定制。它还介绍多级结构、事件、响应式汉堡菜单、国际化及状态持久化。

主要功能

  1. 01绑定层级或远程数据
  2. 02支持多级子菜单与模板
  3. 03动态增删及显隐菜单项
  4. 04配置事件、动画和方向
  5. 05提供汉堡模式、RTL 与本地化

适用场景

  1. 01构建应用顶部导航栏
  2. 02制作侧边栏或工具栏菜单
  3. 03实现移动端折叠导航
  4. 04创建动态上下文菜单

安装

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

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

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

包含的文件

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

references/
advanced-features.md
animation-and-orientation.md
api-reference.md
data-source-binding.md
events-and-interactions.md
getting-started.md
hamburger-and-responsive.md
internationalization-and-persistence.md
menu-items.md
styling-and-appearance.md
use-cases-and-scenarios.md

详细介绍

实现 Syncfusion Angular 菜单组件

菜单组件是一种图形用户界面,可用作应用或网站的导航栏。它支持多级嵌套菜单项、丰富的自定义选项、数据绑定、模板、动画、全面的事件处理、国际化、状态持久化,以及适合移动设备的汉堡菜单模式。

何时使用此技能

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

  • 创建导航菜单,并采用分层结构
  • 绑定数据,数据源可以是数组或远程来源
  • 动态自定义菜单项(添加、移除、启用、禁用)
  • 处理菜单事件(点击、打开、关闭、选择)
  • 应用动画并控制方向
  • 为菜单项添加图标、图片和导航 URL
  • 实现无障碍功能
  • 设置菜单样式和主题
  • 构建实际应用模式(侧边栏菜单、工具栏菜单、上下文菜单)

组件概述

主要功能:

  • ✅ 分层数据绑定和自引用数据绑定
  • ✅ HTML 模板和自定义项渲染
  • ✅ 支持多级嵌套子菜单
  • ✅ 多种动画效果(FadeIn、SlideDown、ZoomIn)
  • ✅ 水平和垂直方向
  • ✅ 支持图标和图片
  • ✅ 动态启用/禁用、显示/隐藏菜单项
  • ✅ 事件驱动的自定义选项
  • ✅ RTL(从右到左)支持
  • ✅ 无障碍功能(键盘导航、ARIA)
  • ✅ CSS 自定义和主题设置

文档和导航指南

📖 核心文档(从这里开始)
1️⃣ 入门指南

📄 阅读: references/getting-started.md (新用户从这里开始)

  • ✅ 安装和软件包设置
  • ✅ 基本菜单实现
  • ✅ CSS 导入和主题配置
  • ✅ 基本属性(enablePersistence、enableRtl、cssClass、hoverDelay、enableScrolling、locale)
  • ✅ 独立架构设置
  • ✅ 首个应用示例
2️⃣ 数据源绑定和模板

📄 阅读: references/data-source-binding.md

  • ✅ 使用字段映射进行分层数据绑定
  • ✅ 自引用数据结构
  • ✅ 使用 DataManager 进行远程数据绑定
  • ✅ HTML 模板和自定义项渲染
  • ✅ 动态填充数据
  • ✅ FieldSettingsModel 配置
3️⃣ 菜单项自定义和动态管理

📄 阅读: references/menu-items.md (现已包含方法!)

  • ✅ 菜单项属性(text、id、iconCss、url、separator)
  • ✅ 菜单项中的图标和图片
  • ✅ 导航 URL
  • ✅ 自定义属性(htmlAttributes)
  • ✅ **新增:**动态方法参考:
    • insertBefore() - 在目标项之前添加菜单项
    • insertAfter() - 在目标项之后添加菜单项
    • removeItems() - 删除菜单项
    • enableItems() - 启用/禁用菜单项
    • showItems() - 显示隐藏的菜单项
    • hideItems() - 隐藏菜单项
  • ✅ 启用/禁用菜单项
  • ✅ 显示/隐藏菜单项
  • ✅ 动态添加、移除和插入菜单项
  • ✅ 用于对菜单项分组的分隔符
  • ✅ 完整的动态菜单管理示例
4️⃣ 动画和方向

📄 阅读: references/animation-and-orientation.md

  • ✅ 动画设置(效果、时长、缓动)
  • ✅ 动画效果(FadeIn、SlideDown、ZoomIn、None)
  • ✅ 水平和垂直方向
  • ✅ 子菜单定位和行为
  • ✅ 菜单点击打开与悬停打开行为
5️⃣ 事件与交互

📄 阅读: references/events-and-interactions.md (新增事件参数)

  • ✅ 事件概览(记录了 7 个事件)
  • ✅ 新增: 完整的事件参数文档:
    • BeforeOpenCloseMenuEventArgs - beforeOpen/beforeClose 事件
    • OpenCloseMenuEventArgs - onOpen/onClose 事件
    • MenuEventArgs - select/beforeItemRender 事件
  • ✅ beforeOpen 和 beforeClose 事件(可取消)
  • ✅ onOpen 和 onClose 事件
  • ✅ Select 事件处理
  • ✅ beforeItemRender 事件(用于工具提示和自定义渲染)
  • ✅ 用于初始化的 Created 事件
  • ✅ 通过事件动态修改菜单
🎯 高级功能与模式
6️⃣ 完整 API 参考

📄 阅读: references/api-reference.md (全面的 API 文档!)

  • ✅ 所有 MenuModel 属性及示例(16 个属性)
  • ✅ 所有 MenuItem 属性及示例(7 个属性)
  • ✅ 动画设置配置
  • ✅ 用于数据绑定的字段设置
  • ✅ 所有菜单方法及签名和示例:
    • insertBefore()、insertAfter()、removeItems()
    • enableItems()、showItems()、hideItems()
  • ✅ 所有菜单事件及参数
  • ✅ 事件参数接口
  • ✅ 枚举(Orientation、MenuEffect、MenuOpenType)
  • ✅ 快速参考摘要
7️⃣ 汉堡模式与响应式设计

📄 阅读: references/hamburger-and-responsive.md (移动优先设计)

  • ✅ 汉堡模式概览
  • ✅ hamburgerMode 属性配置
  • ✅ target 和 title 属性
  • ✅ 基本汉堡菜单实现
  • ✅ 响应式切换(桌面端/移动端)
  • ✅ 带动画的汉堡菜单
  • ✅ 完整的移动端菜单解决方案
  • ✅ 汉堡菜单的状态持久化
  • ✅ 无障碍最佳实践
  • ✅ 适合触摸操作的交互
8️⃣ 国际化与状态管理

📄 阅读: references/internationalization-and-persistence.md (国际化 + 存储)

  • ✅ 支持 15 种以上语言的本地化(i18n)
  • ✅ RTL 语言支持(阿拉伯语、希伯来语、波斯语)
  • ✅ 状态持久化(enablePersistence)
  • ✅ HTML 清理(enableHtmlSanitizer)
  • ✅ 悬停延迟控制(hoverDelay)
  • ✅ 自定义 CSS 类(cssClass)
  • ✅ 高级配置模式
  • ✅ 完整的设置示例
9️⃣ 样式与外观

📄 阅读: references/styling-and-appearance.md

  • ✅ CSS 样式和自定义类
  • ✅ 圆角样式
  • ✅ 标题和图标位置
  • ✅ 主题自定义
  • ✅ Material3 和其他主题集成
  • ✅ CSS 变量自定义
🔟 高级功能与滚动

📄 阅读: references/advanced-features.md

  • ✅ 从右到左(RTL)语言支持
  • ✅ 水平和垂直滚动
  • ✅ 大型菜单处理
  • ✅ 使用分隔符对菜单项分组
  • ✅ 无障碍功能(键盘导航、ARIA)
  • ✅ 嵌套子菜单模式
1️⃣1️⃣ 用例与实际模式

📄 阅读: references/use-cases-and-scenarios.md

  • ✅ 侧边栏菜单实现
  • ✅ 工具栏菜单模式
  • ✅ 上下文菜单场景
  • ✅ ListView 和其他组件集成
  • ✅ 多级菜单结构
  • ✅ 移动端导航
  • ✅ 管理后台模式
  • ✅ 最佳实践和常见模式
🔍 按任务快速查找

我需要……

快速入门示例

import { Component } from '@angular/core';
import { MenuModule } from '@syncfusion/ej2-angular-navigations';
import { MenuItemModel } from '@syncfusion/ej2-angular-navigations';
import { enableRipple } from '@syncfusion/ej2-base';

enableRipple(true);

@Component({
  imports: [MenuModule],
  standalone: true,
  selector: 'app-root',
  template: `<ejs-menu [items]="menuItems"></ejs-menu>`
})
export class AppComponent {
  public menuItems: MenuItemModel[] = [
    {
      text: 'File',
      items: [
        { text: 'Open' },
        { text: 'Save' },
        { separator: true },
        { text: 'Exit' }
      ]
    },
    {
      text: 'Edit',
      items: [
        { text: 'Cut' },
        { text: 'Copy' },
        { text: 'Paste' }
      ]
    },
    { text: 'Help' }
  ];
}

CSS 设置:

@import '../node_modules/@syncfusion/ej2-base/styles/material3.css';
@import '../node_modules/@syncfusion/ej2-navigations/styles/material3.css';

常见模式

1. 带图标的菜单
public menuItems: MenuItemModel[] = [
  {
    text: 'File',
    iconCss: 'e-icons e-file',
    items: [
      { text: 'Open', iconCss: 'e-icons e-open' },
      { text: 'Save', iconCss: 'e-icons e-save' }
    ]
  }
];
2. 带动画的菜单
public animationSettings: MenuAnimationSettingsModel = {
  effect: 'FadeIn',
  duration: 800
};

在模板中使用:<ejs-menu [animationSettings]="animationSettings"></ejs-menu>

3. 带事件的菜单
public onItemSelect(args: MenuEventArgs): void {
  console.log('Selected item:', args.item.text);
}

在模板中使用:<ejs-menu (select)="onItemSelect($event)"></ejs-menu>

4. 动态修改菜单
@ViewChild('menu')
public menuObj?: MenuComponent;

public addItem(): void {
  const newItem: MenuItemModel[] = [
    { text: 'New Menu Item' }
  ];
  this.menuObj?.insertAfter(newItem, 'File', false);
}

完整 API 参考

Menu 组件包含 16 个组件属性、7 个菜单项属性、7 个事件、3 个动画属性、6 个字段设置属性和 10+ 个方法。

完整文档请参阅 references/api-reference.md,其中包括:

  • ✅ 所有 MenuModel 属性及示例
  • ✅ 所有 MenuItem 属性及示例
  • ✅ 所有方法(insertBefore、insertAfter、removeItems、enableItems、showItems、hideItems)
  • ✅ 所有事件及其事件参数
  • ✅ 枚举和快速参考

关键属性

基本属性(最常用)
属性类型用途默认值
itemsMenuItemModel[]要渲染的菜单项数组[]
fieldsFieldSettingsModel将数据源字段映射到菜单结构-
templatestring菜单项的自定义模板-
animationSettingsMenuAnimationSettingsModel控制菜单动画行为-
orientationOrientation'Horizontal' 或 'Vertical''Horizontal'
showItemOnClickboolean点击(true)或悬停(false)时打开子菜单false
cssClassstring用于设置样式的自定义 CSS 类-
enableRtlboolean启用从右到左的布局false
高级属性(适用于特殊情况)
属性类型用途默认值
hamburgerModeboolean启用移动端汉堡菜单false
targetstring汉堡菜单切换按钮选择器-
titlestring汉堡菜单抽屉的标题-
enablePersistenceboolean将菜单状态保存到 localStoragefalse
enableScrollingboolean为大型菜单启用滚动条false
enableHtmlSanitizerboolean清理 HTML 内容(安全)true
hoverDelaynumber子菜单打开前的延迟(毫秒)0
localestring本地化区域代码'en-US'

常见用例

  1. 应用程序菜单栏 - 包含子菜单的 File、Edit、View、Tools 菜单
  2. 导航侧边栏 - 用于页面导航的垂直菜单
  3. 工具栏菜单 - 带图标和命令的水平菜单
  4. 上下文菜单 - 包含动态菜单项的右键菜单
  5. 移动端导航 - 适用于响应式设计的可折叠菜单
  6. 管理后台 - 管理面板的多级导航

功能概览

✅ 数据绑定

  • 层级菜单(父子结构)
  • 自引用数据(id/parentId 关系)
  • 通过 DataManager/HTTP 绑定远程数据
  • 为菜单项自定义模板

✅ 自定义

  • 动态添加/移除/插入菜单项
  • 启用/禁用菜单项(显示为灰色)
  • 通过编程方式显示/隐藏菜单项
  • 自定义 HTML 属性和内容
  • 支持图标和图像
  • 导航 URL

✅ 交互

  • 7 个事件(beforeOpen、beforeClose、onOpen、onClose、select、beforeItemRender、created)
  • 可取消事件,用于控制流程
  • 支持键盘快捷键
  • 助记符 UI

✅ 样式与主题

  • 6 种以上内置主题(Material3、Bootstrap5、Fluent2 等)
  • 自定义 CSS 类
  • 支持圆角
  • 自定义图标/标题
  • 支持深色模式

✅ 响应式与移动设备

  • 移动设备汉堡菜单模式
  • 支持 RTL 语言(15 种以上区域设置)
  • 水平和垂直布局
  • 便于触控的交互
  • 汉堡菜单动画

✅ 性能与状态

  • 将状态持久化到 localStorage
  • 控制悬停延迟
  • 通过 HTML 清理保障安全
  • 高效渲染大型菜单

后续步骤:

  1. 从 getting-started.md 开始,了解安装方法
  2. 根据任务选择参考文档(参见上文“按任务快速访问”)
  3. 参阅 api-reference.md 了解完整的 API 详情

评论

支持 Markdown