import { Injector } from '@angular/core'; import { ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router'; import { ReuseTabCached, ReuseTitle, ReuseTabMatchMode } from './interface'; import { NaMenuService } from '@ng-arthur/core'; /** * 路由复用类,提供复用所需要一些基本接口 * * @export * @class NaReuseService */ export declare class NaReuseTabService { private injector; private menuService; private _debug; private _max; private _mode; private _cachedChange; private _cached; private _titleCached; private _closableCached; private removeUrlBuffer; private _excludes; private _router$; private _keepingScroll; keepingScrollContainer: Element; private positionBuffer; keepingScroll: boolean; private readonly snapshot; /** 允许最多复用多少个页面,取值范围 `2-100` */ max: number; /** 设置匹配模式 */ mode: ReuseTabMatchMode; /** 获取当前缓存的路由总数 */ readonly count: number; /** 设置Debug模式 */ debug: boolean; constructor(injector: Injector, menuService: NaMenuService); /** 当前路由地址 */ readonly curUrl: string; /** 自定义当前标题 */ title: string | ReuseTitle; /** * 获取标题,顺序如下: * * 1. 组件内使用 `ReuseTabService.title = 'new title'` 重新指定文本 * 2. 路由配置中 data 属性中包含 titleI18n > title * 3. 菜单数据中 text 属性 * * @param url 指定URL * @param route 指定路由快照 */ getTitle(url: string, route?: ActivatedRouteSnapshot): ReuseTitle; /** * 根据URL获取菜单详细 * * @private * @param {string} url * @returns * @memberof NaReuseService */ private getMenu; private destroy; private log; /** 获取指定路径缓存所在位置,`-1` 表示无缓存 */ index(url: string): number; /** 获取指定路径缓存是否存在 */ exists(url: string): boolean; private remove; /** * 根据URL移除标签 * * @param [includeNonCloseable=false] 是否强制包含不可关闭 */ close(url: string, includeNonCloseable?: boolean): boolean; /** 获取指定路径缓存 */ get(url: string): ReuseTabCached; /** * 获取 `closable` 状态,顺序如下: * * 1. 组件内使用 `ReuseTabService.closable = true` 重新指定 `closable` 状态 * 2. 路由配置中 data 属性中包含 `reuseClosable` * 3. 菜单数据中 `reuseClosable` 属性 * * @param url 指定URL * @param route 指定路由快照 */ getClosable(url: string, route?: ActivatedRouteSnapshot): boolean; private runHook; private hasInValidRoute; /** * 检查快照是否允许被复用 */ private can; /** * 刷新,触发一个 refresh 类型事件 */ refresh(data?: any): void; /** * 1 * 决定是否允许路由复用,若 `true` 会触发 `store` * 表示对所有路由允许复用 如果你有路由不想利用可以在这加一些业务逻辑判断,这里判断是否有data数据判断是否复用 * * @param {ActivatedRouteSnapshot} route * @returns {boolean} * @memberof NaReuseService */ shouldDetach(route: ActivatedRouteSnapshot): boolean; /** * 存储 * 存储: 当路由离开时会触发。按path作为key存储路由快照&组件当前实例对象 */ store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle | null): void; /** * 决定是否允许应用缓存数据 * 若 path 在缓存中有的都认为允许还原路由 * @param route */ shouldAttach(route: ActivatedRouteSnapshot): boolean; /** * 提取复用数据 * 从缓存中获取快照,若无则返回null * @param route */ retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle; /** * 决定是否应该进行复用路由处理 * @param future * @param curr */ shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean; /** * 获取 `keepingScroll` 状态,顺序如下: * * 1. 路由配置中 data 属性中包含 `keepingScroll` * 2. 菜单数据中 `keepingScroll` 属性 * 3. 组件 `keepingScroll` 值 */ getKeepingScroll(url: string, route?: ActivatedRouteSnapshot): boolean; }