gpt4 book ai didi

angular - 如何仅为特定路线激活 RouteReuseStrategy

转载 作者:太空狗 更新时间:2023-10-29 17:12:59 29 4
gpt4 key购买 nike

有没有办法只为特定路由实现RouteReuseStrategy

这意味着每个路由都有子级,获得其自己的 RouteReuseStrategy 自定义实现,并且其方法仅在特定“树”中的路由被激活时触发。

我目前使用的代码来自 this答案,但如果可能的话,我想用上面的逻辑来扩展它。

最佳答案

创建自定义路由重用策略

import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from "@angular/router";

export class CustomRouteReuseStrategy 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”设置为 true

{ path: 'myPath', component: MyComponent, data: { shouldReuse: true } },

只有数据属性 shouldReuse 设置为 true 的路由才会被重用。

关于angular - 如何仅为特定路线激活 RouteReuseStrategy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49155895/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com