我試圖讓我的Angular路由延遲加載。我在另一個應用程序中有一個工作版本,並且據我所知可以用相同的方式實現它 - 但它不起作用。沒有錯誤,只是一個空的<router-outlet>
。Angular 2+,延遲加載路由失敗(無錯誤)
這是我的app.module.ts
。該SharedModule
和EntityViewsModule
包含共享組件:
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
BrowserAnimationsModule,
SharedModule,
EntityViewsModule,
FormsModule,
HttpModule,
routing,
...rxjs stuff...
],
providers: [
...bunch of services...
],
bootstrap: [AppComponent]
})
export class AppModule { }
routing
定義:
import { RouterModule, Route } from '@angular/router';
import { ModuleWithProviders, Component } from '@angular/core';
const routes: Route[] = [
{ path: '', pathMatch: 'full', redirectTo: 'home'},
{ loadChildren: 'app/frontScreen/frontScreen.module#FrontScreenModule', path: 'home' },
];
export const routing: ModuleWithProviders = RouterModule.forRoot(
routes,
{
useHash: true
}
);
,我嘗試加載模塊:
@NgModule({
imports: [
CommonModule,
EntityViewsModule,
SharedModule
],
declarations: [
FrontScreenComponent
],
bootstrap: [
FrontScreenComponent
]
})
export class FrontScreenModule { }
它正常工作與預先加載在那裏我定義了component: FrontScreenComponent
並手動導入FrontScreenModule
。但以上配置默默無聞。
一個線索可能是重定向不工作。在地址欄中鍵入'http://localhost:4200/#/'並不像我期望的那樣重定向到'http://localhost:4200/#/home'。
將'FrontScreenModule'添加到您的應用程序模塊中 –
加載孩子只能加載子路徑,而不是自己的模塊,您必須將子模塊添加到主模塊中,並將子路徑定義到子模塊中,並調用加載子模塊加載路由和第二件事你只能懶加載你的根路由,然後它會自動延遲加載你的孩子,所以沒有必要按照這個每個模塊。 –
@Babar Bilal,不會那麼熱衷於導入它,從而否定對延遲加載的需求嗎? – Joe