我想了解custom route preloading如何在angular2中工作。但我只是无法让它工作在第一位。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]
})
的DEP
"@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'。无论我在我的'appRoutes'中使用'component'还是'loadChildren',这个行为都是一样的,调试器在'preload'行中断开并且不执行里面的脚本。 – choz
您编辑的解决方案中的差异仅仅是将'PreloadingStrategy'导入到应用程序路径'提供程序'中。实际上,在我原来的问题中,我已经将它包含在内,并且还将其包含在我的路由器模块'RouterModule.forRoot(appRoutes,{preloadingStrategy:CustomPreloadingStrategy,useHash:true});'中。这还没有为我工作。 – choz