ohayolibs
Version:
Ohayo is a set of essential modules for ohayojp.
65 lines (52 loc) • 3.82 kB
Markdown
---
order: 2
title: MenuService
subtitle: 菜单服务
type: Service
---
菜单服务的数据格式是一个 [Menu](https://github.com/ohayojp/ohayo/blob/master/packages/theme/src/services/menu/interface.ts) 数组,其中 `text` 属性表示菜单文本为必填项,而且本身并不受外部组件的影响(例如[sidebar-nav](/components/sidebar-nav)组件),这是因为菜单是贯穿整个项目必不可少的组成部分,而将其独立成一个服务可以更有效被使用,例如:动态生成导航、标题等。
**建议:** 在 Angular 启动服务([startup.service.ts](https://github.com/ohayojp/ohayojp/blob/master/src/app/core/startup/startup.service.ts))从远程获取到菜单数据后,调用 `add()` 方法。
## API
### MenuService
| 方法 | 参数 | 描述 |
|----|----|----|
| `add` | `items: Menu[]` | 设置菜单数据 |
| `clear` | - | 清空菜单数据 |
| `resume` | `callback: Funection` | 重置菜单,可能I18N、用户权限变动时需要调用刷新 |
| `openedByUrl` | `url, recursive = false` | 根据URL设置菜单 `_open` 属性(`_open`用于是否展开菜单的条件值) |
| `getPathByUrl` | `url, recursive = false` | 根据url获取菜单列表 |
**recursive**
表示自动向上递归查找,例如菜单数据源包含 `/ware`,则 `/ware/1` 也视为 `/ware` 项。
### Menu
| 成员 | 说明 | 类型 | 默认值 |
|----|----|----|-----|
| `text` | 文本(支持HTML),**必填项** | `string` | - |
| `i18n` | i18n主键(支持HTML) | `string` | - |
| `group` | 是否显示分组名,指[示例](//ohayojp.github.io/ohayojp/)中的【主导航】字样 | `boolean` | `true` |
| `link` | 路由,`link`、`externalLink` 二选其一 | `string` | - |
| `externalLink` | 外部链接,`link`、`externalLink` 二选其一 | `string` | - |
| `target` | 链接 target | `_blank,_self,_parent,_top` | - |
| `icon` | 图标,指[示例](//ohayojp.github.io/ohayojp/)中的【仪表盘】前图标,只对一级菜单有效 | `string | MenuIcon` | - |
| `badge` | 徽标数,展示的数字,指[示例](//ohayojp.github.io/ohayojp/)中的【小部件】后的红色块。(注:`group:true` 时无效) | `number` | - |
| `badgeDot` | 徽标数,显示小红点 | `boolean` | - |
| `badgeStatus` | 徽标 Badge [颜色](https://ng.ant.design/components/badge/en#nz-badge) | `string` | - |
| `disabled` | 是否禁用菜单 | `boolean` | `false` |
| `hide` | 是否隐藏菜单 | `boolean` | `false` |
| `hideInBreadcrumb` | 隐藏面包屑,指 `page-header` 组件的自动生成面包屑时有效 | `boolean` | - |
| `acl` | ACL配置,若导入 `@ohayo/acl` 时自动有效,等同于 `ACLService.can(roleOrAbility: ACLCanType)` 参数值 | `any` | - |
| `shortcut` | 是否快捷菜单项 | `boolean` | - |
| `shortcutRoot` | 快捷菜单根节点 | `boolean` | - |
| `reuse` | 是否允许复用,需配合 `reuse-tab` 组件 | `boolean` | - |
| `key` | 菜单项唯一标识符,可用于 `getItem`、`setItem` 来更新某个菜单 | `string` | - |
| `children` | 子菜单 | `Menu[]` | - |
### MenuIcon
| 成员 | 说明 | 类型 | 默认值 |
|----|----|----|-----|
| `[type]` | 类型 | `class,icon,iconfont,img` | `icon` |
| `[value]` | 值,包含:类名、图标 `nzType`、图像 | `string` | - |
| `[theme]` | 图标主题风格 | `outline,twotone,fill` | `outline` |
| `[spin]` | 是否有旋转动画 | `boolean` | `false` |
| `[twoToneColor]` | 仅适用双色图标,设置双色图标的主要颜色,仅对当前 icon 生效 | `string` | - |
| `[iconfont]` | 指定来自 IconFont 的图标类型 | `string` | - |
| `[rotate]` | 图标旋转角度 | `number` | - |
> 使用 `iconfont` 类型必须先加载 `NzIconService.fetchFromIconfont`,建议在根模块中执行。