如何使用现有 css 网格调整路由器模块中的 angular 组件
How to adjust angular components from router-module with an existing css grid
我有这个 angular 反应式项目。除了路由,我什么都做了。我在 app.module.ts 文件中指定了我需要的所有路线,然后一切都变得疯狂了。
在我的基本表单中,我有一个响应式 css 网格,其中有两个列非常适合表单,然后再添加一个。
路由器插座似乎将自己作为一个项目添加到网格中。我应该渲染的组件创建了一个额外的网格行,这会破坏整个布局。
我该如何解决?
这是我的模板:
<div class="container">
<div class="wrapper">
<app-form-slider></app-form-slider>
<router-outlet></router-outlet>
</div>
</div>
这是我的app.module:
const routes: Routes = [
{path: '', redirectTo: '/form', pathMatch: 'full'},
{path: 'form', component: FormComponent},
{path: 'logined-user', component: FormLoginedUserComponent}
];
@NgModule({
declarations: [
AppComponent,
FormComponent,
FormLoginedUserComponent,
FormSliderComponent
],
imports: [
BrowserModule,
ReactiveFormsModule,
IMaskModule,
RouterModule.forRoot(routes)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
这是我的 css 模板:
.container {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.wrapper {
margin-right: auto;
margin-left: auto;
display: grid;
height: 100vh;
width: 95vw;
@media (min-width: 700px) {
display: grid;
grid-template-columns: 160px 2fr;
width: 1000px;
height: 95vh;
}
}
app-form {
background-color: #fff;
grid-column: 1 / 3;
@media screen and (min-width: 700px){
grid-column: 2/3;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
&-slider {
grid-column: 1 / 3;
background-color: #48a5ea;
@media screen and (min-width: 700px){
grid-column: 1/2;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
height: 20vh;
}
}
如果包装它,您可以控制它可用的space
<div class="container">
<div class="wrapper">
<div class="col-5">
<app-form-slider></app-form-slider>
</div>
<div class="col-7">
<router-outlet></router-outlet>
</div>
</div>
</div>
这里我使用 bootstrap 作为例子,但你明白我所做的。现在 app-form-slider
有 5 列,您使用路由 router-outlet
抛出的任何内容都必须适合 7 列。
我有这个 angular 反应式项目。除了路由,我什么都做了。我在 app.module.ts 文件中指定了我需要的所有路线,然后一切都变得疯狂了。 在我的基本表单中,我有一个响应式 css 网格,其中有两个列非常适合表单,然后再添加一个。 路由器插座似乎将自己作为一个项目添加到网格中。我应该渲染的组件创建了一个额外的网格行,这会破坏整个布局。
我该如何解决?
这是我的模板:
<div class="container">
<div class="wrapper">
<app-form-slider></app-form-slider>
<router-outlet></router-outlet>
</div>
</div>
这是我的app.module:
const routes: Routes = [
{path: '', redirectTo: '/form', pathMatch: 'full'},
{path: 'form', component: FormComponent},
{path: 'logined-user', component: FormLoginedUserComponent}
];
@NgModule({
declarations: [
AppComponent,
FormComponent,
FormLoginedUserComponent,
FormSliderComponent
],
imports: [
BrowserModule,
ReactiveFormsModule,
IMaskModule,
RouterModule.forRoot(routes)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
这是我的 css 模板:
.container {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
.wrapper {
margin-right: auto;
margin-left: auto;
display: grid;
height: 100vh;
width: 95vw;
@media (min-width: 700px) {
display: grid;
grid-template-columns: 160px 2fr;
width: 1000px;
height: 95vh;
}
}
app-form {
background-color: #fff;
grid-column: 1 / 3;
@media screen and (min-width: 700px){
grid-column: 2/3;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
&-slider {
grid-column: 1 / 3;
background-color: #48a5ea;
@media screen and (min-width: 700px){
grid-column: 1/2;
height: 100%;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
height: 20vh;
}
}
如果包装它,您可以控制它可用的space
<div class="container">
<div class="wrapper">
<div class="col-5">
<app-form-slider></app-form-slider>
</div>
<div class="col-7">
<router-outlet></router-outlet>
</div>
</div>
</div>
这里我使用 bootstrap 作为例子,但你明白我所做的。现在 app-form-slider
有 5 列,您使用路由 router-outlet
抛出的任何内容都必须适合 7 列。