我想根据路由切换routerLinkActive的高亮显示,我有一个仪表板组件,仪表板菜单项和标签菜单项都指向同一个组件,我想根据仪表板的路由向li项添加类。
http://localhost:4300/dashboard对于标签来说,路线是
http://localhost:4300/dashboard/5d1bb53877ed8702d8a01940菜单项的代码
<ul class="sidebar-nav">
<li [ngClass]="{ active: rlal && rlal.isActive == false }">
<a [routerLink]="['/dashboard']" (click)="loadSnippet(null)">
<mat-icon>dashboard</mat-icon>
<span>Dashboard</span>
</a>
</li>
<h3 *ngIf="labelList && labelList.length!=0">Labels</h3>
<ul class="sidebar-nav">
<li *ngFor="let label of labelList" [ngClass]="rlal && rlal.isActive ? 'active' : ''"
routerLinkActive="rlal.isActive">
<a [routerLink]="['/dashboard', label._id]" routerLinkActive #rlal="routerLinkActive"
(click)="loadSnippet(label)">
<mat-icon>label</mat-icon>
<span>{{ label.label_name }} </span>
</a>
</li>
</ul>路线:
{
path: "dashboard",
component: DashboardComponent,
canActivate: [LoggedInGuard]
},
{
path: "dashboard/:labelId",
component: DashboardComponent,
canActivate: [LoggedInGuard]
}高亮显示对于单个标签项很好,但是对于仪表板,li没有被高亮显示。

发布于 2019-07-07 13:45:22
如果仅在没有路由参数的情况下希望仪表板链接处于活动状态,则需要将routerLinkActive和[routerLinkActiveOptions]="{exact: true}"添加到仪表板li节点。
另外,您不需要通过active设置ngClass类,因为routerLinkActive会为您设置这个类。
<li routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
<a routerLink="/dashboard" (click)="loadSnippet(null)">
<mat-icon>dashboard</mat-icon>
<span>Dashboard</span>
</a>
</li>
...
<li routerLinkActive="active" *ngFor="let label of labelList">
<a [routerLink]="['/dashboard', label._id]" (click)="loadSnippet(label)">
<mat-icon>label</mat-icon>
<span>{{ label.label_name }}</span>
</a>
</li>https://stackoverflow.com/questions/56922414
复制相似问题