projects/rebirth-ng/src/lib/common/router-reuse-strategy.ts
Register on AppModule: {provide: RouteReuseStrategy, useClass: RebirthRouterReuseStrategy}; Put {data: {reusable: true}} on reuse router config.
Properties |
Methods |
getReusableKey |
getReusableKey:
|
Default value : (route: ActivatedRouteSnapshot): string => {
return route.url.join('/');
}
|
handlers |
handlers:
|
Type : literal type
|
Default value : {}
|
isReusable |
isReusable:
|
Default value : (route: ActivatedRouteSnapshot): boolean => {
return route.data && route.data.reusable;
}
|
retrieve | ||||||
retrieve(route: ActivatedRouteSnapshot)
|
||||||
Parameters :
Returns :
DetachedRouteHandle
|
shouldAttach | ||||||
shouldAttach(route: ActivatedRouteSnapshot)
|
||||||
Parameters :
Returns :
boolean
|
shouldDetach | ||||||
shouldDetach(route: ActivatedRouteSnapshot)
|
||||||
Parameters :
Returns :
boolean
|
shouldReuseRoute | |||||||||
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot)
|
|||||||||
Parameters :
Returns :
boolean
|
store | |||||||||
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle)
|
|||||||||
Parameters :
Returns :
void
|
import { RouteReuseStrategy, DetachedRouteHandle, ActivatedRouteSnapshot } from '@angular/router';
/**
* Register on AppModule: {provide: RouteReuseStrategy, useClass: RebirthRouterReuseStrategy};
* Put {data: {reusable: true}} on reuse router config.
*/
export class RebirthRouterReuseStrategy implements RouteReuseStrategy {
handlers: { [key: string]: DetachedRouteHandle } = {};
isReusable = (route: ActivatedRouteSnapshot): boolean => {
return route.data && route.data.reusable;
}
getReusableKey = (route: ActivatedRouteSnapshot): string => {
return route.url.join('/');
}
shouldDetach(route: ActivatedRouteSnapshot): boolean {
return this.isReusable(route);
}
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
this.handlers[this.getReusableKey(route)] = handle;
}
shouldAttach(route: ActivatedRouteSnapshot): boolean {
return !!route.routeConfig && !!this.handlers[this.getReusableKey(route)];
}
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
return this.isReusable(route) && route.routeConfig ? this.handlers[this.getReusableKey(route)] : null;
}
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
return future.routeConfig === curr.routeConfig && this.isReusable(future);
}
}