import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router'; interface IRouteConfigData { reuse: boolean; } interface ICachedRoute { handle: DetachedRouteHandle; data: IRouteConfigData; } /*** * * shouldDetach 是否允许复用路由 * store 当路由离开时会触发,存储路由 * shouldAttach 是否允许还原路由 * retrieve 获取存储路由 * shouldReuseRoute 进入路由触发,是否同一路由时复用路由 * * * 把路由 /list 设置为允许复用(shouldDetach), * 然后将路由快照存在 store 当中; * 当 shouldReuseRoute 成立时即: * 再次遇到 /list 路由后表示需要复用路由, * 先判断 shouldAttach 是否允许还原, * 最后从 retrieve 拿到路由快照并构建组件。 * * * usage: * * import { RouteReuseService } from './route-reuse/route-reuse'; * * providers: [ provide: RouteReuseStrategy, useClass: RouteReuseService, }, RouteReuseService, ], * */ export declare class RouteReuseService implements RouteReuseStrategy { static routeCache: Map; /** 是否应该复用路由: 进入路由触发,判断是否是同一路由 */ shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean; /** 判断是否要复用路由 */ shouldDetach(route: ActivatedRouteSnapshot): boolean; /** 存储路由数据:当路由离开时会触发。按path作为key存储路由快照&组件当前实例对象 */ store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void; /** 若 path 在缓存中有的都认为允许还原路由 */ shouldAttach(route: ActivatedRouteSnapshot): boolean; /** 从缓存中获取快照,若无则返回nul */ retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle; private addRedirectsRecursively; private getFullRouteUrl; private getFullRouteUrlPaths; private getRouteUrlPaths; private getRouteData; deleteRouteSnapshot(url: any): void; deleteAllRouteSnapshot(): void; destroy(handle: any, url: any): void; updateWindowRouteCache(): void; } export {};