我一直在尝试Angular 2.1和模块延迟加载和预加载。到目前为止,我已经能够做一些普通的事情并使用不同的策略,或者定义了一种基本的自定义方法,如文档和Victor Savkin的这篇文章中所述。
但是,是否有任何预加载模块的方式,可以在特定事件或组件上的交互(例如单击或类似的想法,然后导航到它)之后触发此加载?
是否有可能注入的东西比一个布尔/数字/字符串值到的数据参数更有趣的路线(即会被添加到RouterModule.forRoot为例)和消费它,当你定义自己的PreloadingStrategy?
app.routes.ts
[
{
path: 'moduleA',
loadChildren: './moduleA.module',
data: {preload: true}
},
{
path: 'moduleB',
loadChildren: './moduleB.module'
}
]
Run Code Online (Sandbox Code Playgroud)
...
export class PreloadSelectedModulesList implements PreloadingStrategy {
preload(route: Route, load: Function): Observable<any> {
return route.data && route.data.preload ? load() : of(null);
}
}
Run Code Online (Sandbox Code Playgroud)