You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
|
|
import { RouteReuseStrategy, DetachedRouteHandle, ActivatedRouteSnapshot } from '@angular/router';
|
|
|
|
/*
|
|
default is to resuse except for one with destroy
|
|
*/
|
|
export class CustomReuseStrategy implements RouteReuseStrategy {
|
|
|
|
handlers: { [key: string]: DetachedRouteHandle } = {};
|
|
|
|
shouldDetach(route: ActivatedRouteSnapshot): boolean {
|
|
console.log('CustomReuseStrategy:shouldDetach', route);
|
|
return true;
|
|
}
|
|
|
|
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
|
|
console.log('CustomReuseStrategy:store', route, handle);
|
|
this.handlers[route.routeConfig.path] = handle;
|
|
}
|
|
|
|
shouldAttach(route: ActivatedRouteSnapshot): boolean {
|
|
console.log('CustomReuseStrategy:shouldAttach', route);
|
|
return !!route.routeConfig && !!this.handlers[route.routeConfig.path];
|
|
}
|
|
|
|
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
|
|
console.log('CustomReuseStrategy:retrieve', route);
|
|
if (!route.routeConfig) {
|
|
return null;
|
|
}
|
|
|
|
return this.handlers[route.routeConfig.path];
|
|
}
|
|
|
|
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
|
|
console.log('CustomReuseStrategy:shouldReuseRoute', future, curr);
|
|
return future.routeConfig === curr.routeConfig;
|
|
}
|
|
}
|