【发布时间】:2019-11-25 04:21:19
【问题描述】:
对于如何放置路由器插座,我有点困惑。我曾尝试研究类似的案例,但无济于事。 这是场景 我有一个仪表板组件,它在登录成功后加载。仪表板包含在 html 上声明的侧边栏、页脚和导航组件。现在,当我单击用户链接向我显示用户列表时,它会加载用户组件,但侧边栏、页脚和导航消失了,我只剩下用户组件。我只是想要一种情况,当我点击侧边栏中的链接时,它只是更改内容而不删除侧边栏、页脚和导航...... PS:用户组件有自己的模块,然后我像往常一样将它导入到 appModule 中。
这是我目前所拥有的。
app.component.html
<router-outlet></router-outlet>
dashboard.component.html
<side-bar></side-bar>
<topnav-bar></topnav-bar>
<content></content>
<footer></footer>
sidebar.component.html
<li>
<a id="formsli" (click)="anchorClicked($event)"
><i class="fa fa-user"></i> User<span class="fa fa-chevron-down"></span
></a>
<ul class="nav child_menu">
<li><a [routerLink]="['/user/list']">User List</a></li>
<li><a [routerLink]="['/user/new']">New User</a></li>
</ul>
</li>
用户路由文件
const routes: Routes = [
{ path: 'user/list', component: UsersComponent },
{ path: 'user/new', component: UserComponent },
];
应用模块
export const AppRoutes2: Routes = [
{ path: '', component: LoginComponent},
{ path: 'content', component: ContentComponent },
{ path: 'dashboard', component: DashboardComponent },
];
imports: [
BrowserModule,
RouterModule.forRoot(AppRoutes2, {useHash: false}),
HttpClientModule,
UsersModule,
],
如果我单击用户列表链接,侧边栏、导航和页脚就会消失。我希望它保留并只更改内容区域。
请问,我做错了什么或做错了什么??
【问题讨论】:
-
Well Router Outlet 将组件替换为加载的任何组件。因此,如果导航栏和侧边栏不是用户组件的一部分,那么它们将不会被加载。您可以做的是将它们全部加载到应用程序组件中,无论是在单独的共享组件中,还是单独或一个一个地加载,并且仅当用户在路由器出口之外登录时才使用 ngif 指令显示或隐藏公共组件