2017-08-25 111 views
0

所以我的問題是,我想預先加載我所有的子路由模塊。我有下面我的根路由模塊Angular 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進口RouterModule.forRoot(appRoutes, { preloadingStrategy: AppCustomPreloader, enableTracing: true })更多的洞察力。
  2. 檢出Augury,它是一款Chrome擴展程序,可幫助您使用Angular應用程序進行調試。您的情況的關鍵工具是您的路由樹的直觀表示。
+0

令人敬畏的啓用跟蹤允許我看到哪個特定的模塊失敗,並確信足以觸發遞歸加載。謝謝你的提示! – Monzingo

相關問題