有一个不使用两个 app.component.ts 的解决方案。
我把文件放在我当前项目中使用的地方。
app.component.ts
<app-http-loader></app-http-loader>
<div class="app-root-style">
<router-outlet></router-outlet>
</div>
app.router-modules.ts
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{ path: 'auth', loadChildren: './auth/auth.module#AuthModule', canLoad: [AuthGuard] },
{ path: 'home', loadChildren: './home/home.module#HomeModule', canLoad: [HomeGuard] },
{ path: '**', component: FourZeroFourComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
auth-routing.module.ts
const routes: Routes = [
{ path: '', redirectTo: 'login' },
{ path: 'login', component: LoginComponent },
{ path: 'forgotpassword', component: ForgotPasswordComponent }
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AuthRoutingModule { }
home-routing.module.ts
const routes: Routes = [
{
path: '', component: HomeComponent, children: [
{ path: 'dashboard/:uid', component: DashboardComponent },
{ path: 'userinfo', loadChildren: '../user/user.module#UserModule', canLoad: [HomeGuard] },
}
]
},
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class HomeRoutingModule { }
这样你就可以完成整个路线
网址会是这样的:
https://localhost:4200/auth/login
https://localhost:4200/home/dashboard/23
如果用户未登录,请参阅我在这里使用 Guard 来保护路由