让我们考虑两个组件 home 和 login 有两个不同的布局,在这种情况下,使用命令创建两个组件
ng g c layouts/home-layout -s -t 和 ng g c layouts/login-layout -s -t 创建两个组件(-t 内联模板 -s 内联样式)。在 app.component.html 中完成此操作后,只保留 router-outlet。然后在 home-layout.component.ts 的模板部分设计你的布局
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-home-layout',
template: `
<app-headding></app-headding>
<div class="col-md-4">
<app-menu></app-menu>
</div>
<div class="col-md-8">
<router-outlet></router-outlet>
</div>
<app-footer></app-footer>
`,
styles: []
})
export class HomeLayoutComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
类似地,创建没有菜单选择器的登录布局
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-login-layout',
template: `
<app-headding></app-headding>
<div class="col-md-12">
<router-outlet></router-outlet>
</div>
<app-footer></app-footer>
`,
styles: []
})
export class LoginLayoutComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
现在通过为这些模块创建子组件来设置路由模块
import { LoginLayoutComponent } from './layouts/login-layout/login-layout.component';
import { HomeLayoutComponent } from './layouts/home-layout/home-layout.component';
import { LoginComponent } from './components/login/login.component';
import { HomeComponent } from './components/home/home.component';
const routes: Routes = [
{path: '', redirectTo: 'create-repo', pathMatch: 'full'},
{path: '', component: HomeLayoutComponent,
children: [
{path: 'home', component: HomeComponent }
]
},
{path: '', component: LoginLayoutComponent,
children: [
{path: 'login', component: LoginComponent }
]
},
{path: '**', component: CreateRepoComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
我希望它对某人有所帮助。