2017-07-02 24 views
2

のために、私はただ一つのモジュールのためにこのカスタムルート再利用戦略を使用したい:カスタムRouteReuseStrategy角度の子モジュール

export class CustomRouteReuseStrategy extends RouteReuseStrategy { 
    public shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; } 
    public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {} 
    public shouldAttach(route: ActivatedRouteSnapshot): boolean { return false; } 
    public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle { return null; } 
    public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean { 
     return true; 
    } 
} 

だから私は(@NgModuleに渡されました)ChildModuleという名前の私のモジュールの一つで:

providers: [ 
     { 
      provide: RouteReuseStrategy, 
      useClass: CustomRouteReuseStrategy 
     } 
] 

残念ながら、私がそこを通過すると、単に無視されます。私のルートに追加されたときにうまく動作しますが、AppModule ...それが重要かどうかはわかりませんが、ChildModuleが遅れて読み込まれています。どのようにそれを解決するには?

答えて

5

私は最終的にビットが変更通過させることによって、それを達成CustomRouteStrategyAppModuleに:

{ 
    path: 'some-path', 
    data: { reuse: true }, 
    loadChildren: './child.module#ChildModule', 
}, 

Demo with more advanced solution

export class CustomRouteReuseStrategy extends RouteReuseStrategy { 
    public shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; } 
    public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {} 
    public shouldAttach(route: ActivatedRouteSnapshot): boolean { return false; } 
    public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle { return null; } 
    public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean { 
     return (future.routeConfig === curr.routeConfig) || future.data.reuse; 
    } 
} 

そして遅延ロードChildModuleのルーティングにdata: { reuse: true }を追加

関連する問題