Мое приложение немного большого размера. Он содержит много функциональных модулей, и большинство из них загружаются лениво. Я хочу предварительно загрузить лениво загруженный модуль, который включен в маршруты forChild .
Для этого я сослался на документацию Angular и проследил за их действиями. Я предоставил услугу пользовательской стратегии предварительной загрузки, упомянутую ниже.
Это мой файл стратегии предварительной загрузки:
@Injectable()
export class CustomPreloadingWithDelayStrategy implements PreloadingStrategy {
preload(route: Route, load: () => Observable<any>): Observable<any> {
if (route.data && route.data['preload']) {
return load();
} else {
return Observable.of(null);
}
}
}
файл приложения-маршрутизации,
const routes: Routes =
[
XXX,
{
path: '',
data: {
base: true
},
component: MyComp,
children: [
{
path: 'page1/:id',
loadChildren: 'XXXXXXX'
},
{
path: 'page2',
loadChildren: 'XXXXXXXX'
},
{
path: 'page3',
loadChildren: 'app/feature-modules/folder1/my-folder1-module#Folder1Module'
}];
@NgModule({
imports: [RouterModule.forRoot(routes, {useHash: true, preloadingStrategy: CustomPreloadingWithDelayStrategy})],
exports: [RouterModule],
entryComponents: [ ]
})
export class AppRoutingModule {}
Файл маршрутизации My Folder1Module:
const routes: Routes = [{
path: 'sub-page1/:data1/:data2',
loadChildren: 'app/feature-modules/sub-pages/pages/sub-page1.module#SubPage1Module'
}, {
path: 'sub-page2/:data1',
loadChildren: 'app/feature-modules/sub-pages/pages/sub-page2.module#SubPage2Module',
data: {preload: true}
}];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class Folder1RoutingModule {
}
Поэтому, когда я открываю этот маршрут, / page3 / sub-page1 / data1 / data2 , SubPage2Module должен быть предварительно загружен. Но этого не происходит.