# tss-platform **Repository Path**: shore1ot/tss-platform ## Basic Information - **Project Name**: tss-platform - **Description**: 基于 Angular 和 ng-zorro-antd 的菜单组件 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-22 - **Last Updated**: 2022-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: Angular, platform ## README # TssPlatform 基于 Angular 和 ng-zorro-antd 的菜单组件 并添加配套路由复用策略 ## 依赖 - Angular: 8.2.5 - ng-zorro-antd: 8.5.2 ## 使用方式 按照如下步骤进行: ### 安装依赖 `npm install tss-platform` ### 在模块中引入菜单模块 以 `app.module.ts` 为例 ``` import { TssPlatformModule } from 'tss-platform'; @NgModule({ declarations: [ AppComponent, LayoutComponent, ], imports: [ ... TssPlatformModule, ], bootstrap: [AppComponent] }) export class AppModule { } ``` ### 使用菜单组件 ``` import { Component } from '@angular/core'; import { Menu } from 'tss-platform'; @Component({ selector: 'app-layout', template: ` `, }) export class LayoutComponent { menus: Menu[] = [ { title: '一级菜单', url: '/link', icon: 'read', auth: 'authority', // 权限点 children: [ { title: '二级菜单-列表', url: '/link/list', hidden: true, // 隐藏页面 }, { title: '二级菜单-编辑', url: '/link/edit', } ] } ]; collapse = false; onCollapse($event: boolean): void { this.collapse = $event; } } ``` ``` import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: `` }) export class AppComponent { } ``` ### 路由配置 ``` import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { LayoutComponent } from './layout.component'; const routes: Routes = [ { path: '', component: LayoutComponent, children: [ { path: '', redirectTo: 'link', pathMatch: 'full' }, { path: 'link', loadChildren: () => import('./xxxx.module').then((m) => m.XxxxxModule) }, ] }, { // 登录模块可跳出菜单 path: 'passport', loadChildren: () => import('./passport.module').then((m) => m.PassportModule) } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { } ``` ### 权限注入 `MenuService.setAuth(['xxxx']);` ### 页面中使用面包屑 ``` ``` ## 路由复用策略 需要缓存的页面菜单配置 `reuse: true` ,就可以在切换其它页面时缓存页面快照,再次返回该页面则还原上次页面信息,当点击菜单切换页面时清空页面复用缓存。并添加 `_onReuseInit` 和 `_onReuseDestroy` 钩子,只在路由复用页面进出时触发。具体使用方式如下: ### app.module.ts ``` import { ReuseTabService, ReuseTabStrategy } from 'tss-platform'; @NgModule({ declarations: [ AppComponent, LayoutComponent, ], imports: [ ... ], providers: [ ... { provide: RouteReuseStrategy, useClass: ReuseTabStrategy, deps: [ReuseTabService], }, ], bootstrap: [AppComponent] }) export class AppModule { } ``` ### share.mudule.ts ``` import { ReuseTabModule } from 'tss-platform'; ``` ### 在需要复用的菜单中添加 reuse 参数 ``` ... { title: '用户列表', url: '/user/edit', reuse: true, }, ``` 注意: 点击菜单将自动清除所有复用缓存