自定义重用策略存在问题我已经四处工作,我看不到任何解决方案。也许你的一个人能够帮助我。
因此。我实现了我的应用程序Custom Reuse Strategy。它工作得很好,另外我添加了一个我不想存储的adressess列表。这是代码:
import {RouteReuseStrategy, DetachedRouteHandle, ActivatedRouteSnapshot} from "@angular/router";
export class CustomRoutingReuse implements RouteReuseStrategy{
handlers: {[key: string]: DetachedRouteHandle} = {};
private ignoredRoutes : String[] = [
'module_one/:id',
'module_one/:id/mod',
'module_one/:id/something_else',
];
shouldDetach(route: ActivatedRouteSnapshot): boolean {
//console.debug('CustomReuseStrategy:shouldDetach', route);
if(this.ignoredRoutes.indexOf(route.routeConfig.path) > -1){
return false;
}else {
return true;
}
}
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
console.debug('CustomReuseStrategy:store', route, handle);
this.handlers[route.routeConfig.path] = handle;
}
shouldAttach(route: ActivatedRouteSnapshot): boolean {
console.debug('CustomReuseStrategy:shouldAttach', route);
return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
}
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
console.debug('CustomReuseStrategy:retrieve', route);
if (!route.routeConfig) return null;
return this.handlers[route.routeConfig.path];
}
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
console.debug('CustomReuseStrategy:shouldReuseRoute', future, curr);
return future.routeConfig === curr.routeConfig;
}
}
现在想象一下。列表中的第一条路线:
module_one/:id
向我显示某些内容的详细信息。第二个:
module_one/:id/mod
允许我从第一个路径更改细节的某些值,然后将它们发送到后端并对数据库进行一些插入。
现在......我不想要第一条路线。它是一个处理内部5个以上的组件。当它被记住后,在改变价值并回到它之后,价值仍然存在,因为整个组件都被记住了。
我知道,它有点乱。以下是我正在寻找的内容:
我想在customReuseStrategy中创建一个列表,如:
private ignoredComponents : String[] = [
'myModuleOneComponent'];
以其名称分离组件。
或者我需要一种方法来告诉组件重新加载自己,或者只是在回到它之后执行我的指示,当它被存储时。
答案 0 :(得分:0)
对于遇到此问题的任何人,您都可以在route.component.name
内找到组件名称
shouldDetach(route: ActivatedRouteSnapshot): boolean {
return this.ignoredComponents.indexOf(route.component.name) === -1;
}