Angular 2 Eager Loading最大调用堆栈大小超出
问题描述:
所以我的问题是,我想预先加载我所有的子路由模块。我有下面我的根路由模块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种可能性的好方法是什么?
答
没有发布您的路线很难说。下面是一些步骤,帮助我建立一个非常复杂的路由器:
- 你可以尝试在发生了什么改变你的RouterModule进口
RouterModule.forRoot(appRoutes, { preloadingStrategy: AppCustomPreloader, enableTracing: true })
更多的洞察力。 - 检出Augury,它是一款Chrome扩展程序,可帮助您使用Angular应用程序进行调试。您的情况的关键工具是您的路由树的直观表示。
令人敬畏的启用跟踪允许我看到哪个特定的模块失败,并确信足以触发递归加载。谢谢你的提示! – Monzingo