我有几个到同一个组件的路由(即/ projects,/ projects / create,/ projects /:id和children,都指向我的ProjectComponent)。 当在/ projects /:id之间导航时只有:id改变一切都很好,我可以订阅params并相应地更新我的内容,但是当我从/ projects导航到/ projects / create或者/ projects /:id时,组件被重新创建。
有没有办法导航到指向同一组件的路线而不重新创建它?
答案 0 :(得分:0)
您应该实现自定义RouteReuseStrategy
创建实施RouteReuseStrategy
的服务:
export class CustomReuseStrategy implements RouteReuseStrategy {
handlers: {[key: string]: DetachedRouteHandle} = {};
shouldDetach(route: ActivatedRouteSnapshot): boolean {
return true;
}
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
this.handlers[route.routeConfig.path] = handle;
}
shouldAttach(route: ActivatedRouteSnapshot): boolean {
return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
}
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
if (!route.routeConfig) return null;
return this.handlers[route.routeConfig.path];
}
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
return future.routeConfig === curr.routeConfig;
}
}
并将此提供商添加到@NgModule
:
providers: [
{provide: RouteReuseStrategy, useClass: CustomReuseStrategy}
]
您可以将CustomReuseStrategy
调整为只有可以重复使用该组件的特定路径,但我会将其留给您查找方法。