Я пытаюсь понять, как это custom route preloading работает в угловом2. Но я просто не могу заставить его работать в первую очередь.Angular2 PreloadingStrategy не работает
Вот мой код
custom.preloading-strategy.ts
export class CustomPreloadingStrategy implements PreloadingStrategy {
preload(route: Route, fn:() => Observable<any>): Observable<any> {
console.log("Preloading...");
return Observable.of(true).delay(1000).flatMap(_ => fn());
}
}
app.routes.ts
const appRoutes: Routes = [
{
path: '',
redirectTo: 'home',
pathMatch: 'full',
data: {
preload: true
}
},
{
path: 'home',
component: HomeComponent,
data: {
preload: true
}
}
];
export const appRoutingProviders: any[] = [
CustomPreloadingStrategy
];
export const routeComponents: any[] = [
HomeComponent
];
export const routing = RouterModule.forRoot(appRoutes, {
preloadingStrategy: CustomPreloadingStrategy,
useHash: true
});
app.module.ts
@NgModule({
bootstrap: [AppComponent],
providers: [appRoutingProviders, appServices],
imports: [
BrowserModule,
FormsModule,
HttpModule,
routing
],
declarations: [
AppComponent,
SharedComponents,
appDirectives,
routeComponents,
NewsMediaListComponent
],
entryComponents: [AppComponent]
})
DEPS
"@angular/common": "2.1.2",
"@angular/compiler": "2.1.2",
"@angular/core": "2.1.2",
"@angular/forms": "2.1.2",
"@angular/http": "2.1.2",
"@angular/platform-browser": "2.1.2",
"@angular/platform-browser-dynamic": "2.1.2",
"@angular/router": "3.1.2",
"rxjs": "5.0.0-rc.1",
Однако, нет никакой ошибки или вообще в журналах. И я не знаю, чего мне здесь не хватает.
У меня есть пример из этой статьи. Тем не менее, я попробовал ваше точное решение, используя другое имя для модуля и компонента ('TestComponent' и' TestModule'), но я все равно не получаю свой 'console.log'. Это то же поведение, если я использую 'component' или' loadChildren' в своих «appRoutes», отладчик разбивается на строку «preload» и не выполняет скрипты внутри него. – choz
Разница в вашем отредактированном решении заключается в том, чтобы импортировать 'PreloadingStrategy' в приложения-маршруты' провайдеров'. На самом деле, в моем первоначальном вопросе, я включил его заранее, а также включил его в свой модуль маршрутизатора 'RouterModule.forRoot (appRoutes, {preloadingStrategy: CustomPreloadingStrategy, useHash: true});'. Это пока не сработало. – choz