0
我在延遲加載模塊中路由時遇到問題。延遲加載嵌套模塊和路由
這裏是我的「根」的路線:
const routes: Routes = [
{path: '', redirectTo: 'admin', pathMatch: 'full' },
{path: 'admin', loadChildren: 'app/admin.module#AdminModule'}
];
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
exports: [
RouterModule
]
})
export class MainRoutingModule {}
所以我從我的應用程序期望,是空的路徑重定向到/admin
- 這工作正常,模塊被加載。
我有另外一個重定向:
const routes: Routes = [
{path: '', component: AdminComponent, children: [
{path: '', redirectTo: 'app', pathMatch: 'full' },
{path: 'app', loadChildren: './app/app.module#AppModule', canActivate: [ AuthGuard ] },
{path: 'login', component: LoginComponent}
]},
];
@NgModule({
imports: [
RouterModule.forChild(routes),
AppModule
],
exports: [
RouterModule
]
})
export class AdminRoutingModule {}
這裏我有兩個方案:
- 如果用戶進行身份驗證重定向到
app
- 因此整個路徑是/admin/app
- 否則重定向到
login
- 所以整個路徑應該是/admin/login
終於在管理應用程序的路由:
const routes: Routes = [
{ path: '', component: AppComponent, children: [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent},
]}
];
現在的問題開始。如果我將以url localhost:3000/admin/app/(*)
的身份進入我的身邊,一切都按預期工作,AuthGuard會被調用,url可以,如果用戶未經身份驗證,他會重定向到登錄頁面。
但是!如果我將輸入localhost:3000
應用程序將我重定向到localhost:3000/admin/home
(缺少app
)並且未調用AuthGuard。它看起來像Angular正在省略admin-routing.module
並直接轉到最後一個。
是什麼原因?我該如何解決這個問題?