在角度2

时间:2016-12-15 11:58:55

标签: javascript angular routes navbar router

用户登录系统后,我有一个导航栏,如信息中心客户产品。这就是我设置路线文件的方式。

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 无效,因为仪表板链接始终处于活动状态。那么,我的路线设计是否合适?建议请。

1 个答案:

答案 0 :(得分:2)

我认为您需要为您的信息中心链接添加routerLinkActiveOptions,如下所示:

 <li><a routerLink="" routerLinkActive="active" [routerLinkActiveOptions]="{exact:true}">Dashboard</li>