我一直在尝试使用Angular 2.1和模块延迟加载和预加载。到目前为止,我已经能够做一些常见的事情并使用不同的策略,或者定义一个基本的自定义策略,如Victor Savkin的docs和this post中所述。
但是,是否有任何方法可以在特定事件或组件上的交互之后预加载触发此加载的模块(比如点击或类似的事情以及导航到之前)?
是否可以向 Routes 的数据参数注入比布尔/数字/字符串值更有趣的东西(将添加到 RouterModule.forRoot 例如)并在定义自己的自定义 PreloadingStrategy 时使用它?
app.routes.ts
[
{
path: 'moduleA',
loadChildren: './moduleA.module',
data: {preload: true}
},
{
path: 'moduleB',
loadChildren: './moduleB.module'
}
]
...
export class PreloadSelectedModulesList implements PreloadingStrategy {
preload(route: Route, load: Function): Observable<any> {
return route.data && route.data.preload ? load() : of(null);
}
}