title: CustomReuseStrategy not working for lazy loaded components
body: <p>I have a component that is part of a module that is now being lazy loaded. The problem is that the component is re-initializing every time the route is used. </p>
  
  <p>Here is my route.</p>
  
  <pre><code>{
      path: 'activities',
      loadChildren: () =&gt; System.import('../containers/activity-engine/activity-engine.module').then((file: any) =&gt; {
          return file.default;
      }),
      data: {
          shouldDetach: true, // Route will be resused. See CustomReuseStrategy.
          title: null
      }
  },
  </code></pre>
  
  <p>Here is the route for the module being loaded. </p>
  
  <pre><code>{
      path: '',
      component: ActivityEngineComponent,
      data: {
          shouldDetach: true, // Route will be resused. See CustomReuseStrategy.
          title: null
      }
  },
  </code></pre>
  
  <p>I am importing the following classes in app module and the lazy loaded module, and they are being applied as providers: </p>
  
  <pre><code>import { RouteReuseStrategy } from '@angular/router';
  import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
  import { CustomReuseStrategy } from '../../shared/router/custom-reuse-strategy';
  
  providers: [
          { provide: RouteReuseStrategy, useClass: CustomReuseStrategy },
          { provide: LocationStrategy, useClass: PathLocationStrategy }
  ]
  </code></pre>
  
  <p>Here is my CustomReuseStrategy: </p>
  
  <pre><code>export class CustomReuseStrategy implements RouteReuseStrategy {
  
      handlers: { [key: string]: DetachedRouteHandle } = {};
  
      // Determines if this route (and its subtree) should be detached to be reused later.
      shouldDetach(route: ActivatedRouteSnapshot): boolean {
  
          // We can choose which routes should be resued (i.e. shouldDetach === true) 
          // (https://stackoverflow.com/questions/41483187/conditionally-apply-router-reuse-strategy-for-angular2-routes).
          return !!route.data &amp;&amp; !!(route.data as any).shouldDetach;
      }
  
      store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
          this.handlers[route.routeConfig.path] = handle;
      }
  
      shouldAttach(route: ActivatedRouteSnapshot): boolean {
          return !!route.routeConfig &amp;&amp; !!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;
      }
  
  }
  </code></pre>
  
  <p>Is there a was to use <code>CustomReuseStrategy</code> with lazy loaded components? </p>