是否有办法仅针对特定路线实施RouteReuseStrategy
?
表示每个路由都有子项,获得自己的RouteReuseStrategy
自定义实现,并且只有在特定“树”中的路由时才触发其方法。被激活了。
我目前使用this回答中的代码,但如果可能,我想用上面的逻辑扩展它。
答案 0 :(得分:6)
创建自定义路由重用策略
import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from "@angular/router";
export class CustomRouteReuseStategy implements RouteReuseStrategy {
handlers: { [key: string]: DetachedRouteHandle } = {};
shouldDetach(route: ActivatedRouteSnapshot): boolean {
return route.data.shouldReuse || false;
}
store(route: ActivatedRouteSnapshot, handle: {}): void {
if (route.data.shouldReuse) {
this.handlers[route.routeConfig.path] = handle;
}
}
shouldAttach(route: ActivatedRouteSnapshot): boolean {
return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
}
retrieve(route: ActivatedRouteSnapshot): {} {
if (!route.routeConfig) return null;
return this.handlers[route.routeConfig.path];
}
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
return future.data.shouldReuse || false;
}
}
在路由器模块中,在providers
阵列中实施新策略:
providers: [
{ provide: RouteReuseStrategy, useClass: CustomRouteReuseStategy },
...
]
然后,使用数据属性声明所需的路由' shouldReuse'设为真
{ path: 'myPath', component: MyComponent, data: { shouldReuse: true } },
只有数据属性shouldReuse
设置为true
的路由才会被重复使用。
答案 1 :(得分:0)
是的,您可以通过编写自己的RouteReuseStrategy(CustomReuseStrategy)来完成此任务。
对于黑名单或白名单路径,您可以搜索可以在路径下的路由器模块中设置的数据属性,然后选择附加组件(以便稍后重新使用),或者不是。
有助于您入门的有用链接: