angular2에서이 custom route preloading이 어떻게 작동하는지 이해하려고합니다. 그러나 나는 처음에는 그것을 작동시키지 않는다.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]
})
이 오류가 없다거나 전혀 로그에, 그러나
"@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",
을 deps. 그리고 나는 내가 여기서 무엇을 놓치고 있는지 모른다.
저는 실제로이 기사에서 예제를 얻었습니다. 그러나 모듈과 컴포넌트 ('TestComponent'와'TestModule')에 또 다른 이름을 사용하여 정확한 해결책을 시도했지만 여전히'console.log'를 얻지 못했습니다. 이것은'appRoutes'에서'component' 또는'loadChildren'을 사용하던간에 디버거가'preload' 라인에서 깨지고 그 안에 스크립트를 실행하지 않는 것과 같은 행동입니다. – choz
수정 된 솔루션의 차이점은'PreloadingStrategy'를 앱 경로'providers'로 가져 오는 것입니다. 사실, 내 원래의 질문에, 나는 그것을 미리 포함 시켰고 라우터 모듈'RouterModule.forRoot (appRoutes, {preloadingStrategy : CustomPreloadingStrategy, useHash : true});'에 그것을 포함시켰다. 이것은 아직 나를 위해 일하지 않았다. – choz