File

projects/rebirth-ng/src/lib/common/router-reuse-strategy.ts

Description

Register on AppModule: {provide: RouteReuseStrategy, useClass: RebirthRouterReuseStrategy}; Put {data: {reusable: true}} on reuse router config.

Implements

RouteReuseStrategy

Index

Properties
Methods

Properties

getReusableKey
getReusableKey:
Default value : (route: ActivatedRouteSnapshot): string => { return route.url.join('/'); }
handlers
handlers: literal type
Type : literal type
Default value : {}
isReusable
isReusable:
Default value : (route: ActivatedRouteSnapshot): boolean => { return route.data && route.data.reusable; }

Methods

retrieve
retrieve(route: ActivatedRouteSnapshot)
Parameters :
Name Type Optional
route ActivatedRouteSnapshot no
shouldAttach
shouldAttach(route: ActivatedRouteSnapshot)
Parameters :
Name Type Optional
route ActivatedRouteSnapshot no
Returns : boolean
shouldDetach
shouldDetach(route: ActivatedRouteSnapshot)
Parameters :
Name Type Optional
route ActivatedRouteSnapshot no
Returns : boolean
shouldReuseRoute
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot)
Parameters :
Name Type Optional
future ActivatedRouteSnapshot no
curr ActivatedRouteSnapshot no
Returns : boolean
store
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle)
Parameters :
Name Type Optional
route ActivatedRouteSnapshot no
handle DetachedRouteHandle no
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);
  }

}

results matching ""

    No results matching ""