用户登录系统后,我有一个导航栏,如信息中心,客户,产品。这就是我设置路线文件的方式。
app.routing.ts
export const router: Routes = [
{
path: '',
redirectTo: 'admin',
pathMatch: 'full',
canActivate: [AuthGuard],
},
{
path: 'admin',
component: AdminComponent,
canActivateChild: [AuthGuard],
children: [
{
path: 'customer',
component: CustomerComponent
},
{
path: 'product',
component: ProductComponent
},
{
path: '',
component: DashboardComponent
}
]
},
{ path: 'login', component: LoginComponent }
];
export const routes: ModuleWithProviders = RouterModule.forRoot(router);
我的 app.component.html 文件作为基本文件。这里没有包含app.component.ts文件,它包含export class和templateUrl
<router-outlet></router-outlet>
我的 admin-dashboard.component.ts 文件
@Component({
selector: 'app-admin',
template: `
<div class="wrapper">
<!-- Start of the navigation bar -->
<app-navbar></app-navbar>
<!-- END NAVIGATION -->
<div class="customer-panel">
<router-outlet></router-outlet>
</div><!-- End of the customer panel -->
</div><!-- /end wrapper -->
`
})
export class AdminComponent implements OnInit {}
这是 navbar.component.html 文件
<div class="collapse navbar-collapse" id="navigate">
<ul class="nav navbar-nav">
<li><a routerLink="" routerLinkActive="active">Dashboard</a></li>
<li><a routerLink="customer" routerLinkActive="active">Customers</a></li>
<li><a routerLink="product" routerLinkActive="active">Products</a></li>
<li><a routerLink="user">User</a></li>
<li><a href="product-transactions.html">Transactions</a></li>
<li><a href="#">Reports</a></li>
</ul>
</div>
所以,我所做的是我的应用程序加载包含 router-outlet 的app.component.html文件。然后加载 admin.component.html 文件,我已将其他导航栏链接作为 admin.component.ts 文件的子项加载 router-outlet 这里也是。它运行良好,但 routerLinkActive 无效,因为仪表板链接始终处于活动状态。那么,我的路线设计是否合适?建议请。
答案 0 :(得分:2)
我认为您需要为您的信息中心链接添加routerLinkActiveOptions
,如下所示:
<li><a routerLink="" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">Dashboard</li>