2017-08-25 8 views
0

私の問題は、私のすべての子ルートモジュールをプリロードしたいということです。私は角2 Eager Loading最大コールスタックサイズを超えました

RouterModule.forRoot(appRoutes, { preloadingStrategy: AppCustomPreloader }) 

AppCustomPreloaderは私のネストされたルーティングモジュール内のルートのそれぞれについて

export class AppCustomPreloader implements PreloadingStrategy { 

preload(route: Route, load: Function): Observable<any> { 
    try { 
     return route.data && route.data.preload ? load() : Observable.of(null); 
    } 
    catch (ex) { 
     console.log('error'); 
    } 

} 
} 

次、私は、データの属性それぞれを与えているように見える私のルートルーティングモジュールに以下があります。 " 「しかし、私は取得しています正しく

{ 
    path: 'somepage', 
    loadChildren: './somedirectory/somemodule.module#SomeModule', 
    data: { preload: true } 
} 

すべてのプリロード下のように 『最大コールスタックサイズは、Firefoxで』クロームでエラーと 『多すぎる再帰を』超過真。

私は、約10のモジュールがプリロードされていて、それらはすべて比較的小さいです。問題はスタックサイズが実際には大きすぎるか、何か無限のルーティングモジュールの負荷がなくなっているという問題です。 2つの可能性をデバッグする良い方法は何ですか?

答えて

1

あなたのルートを掲載することなく、言うことは難しいです。

  1. あなたは何が起こっているかの詳細洞察力のためにRouterModule.forRoot(appRoutes, { preloadingStrategy: AppCustomPreloader, enableTracing: true })にごRouterModuleのインポートを変更してみてください:ここで私は非常に複雑なルータを構築する助けたいくつかのステップがあります。
  2. Auguryをチェックしてください。このアプリはChromeの拡張機能で、角型アプリのデバッグに役立ちます。あなたの状況にとって重要なツールは、ルーティングツリーを視覚的に表現することです。
+0

素晴らしいトレースを使用すると、失敗した特定のモジュールと再帰的な読み込みを開始するのに十分な特定のモジュールを確認することができました。ヒントをありがとう! – Monzingo

関連する問題