gpt4 book ai didi

javascript - 基于 routerLinkActive 的 Angular 高亮

转载 作者:行者123 更新时间:2023-11-28 14:08:09 26 4
gpt4 key购买 nike

我想根据路由切换 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 没有突出显示

enter image description here

最佳答案

如果您希望仪表板链接仅在没有路由参数时处于事件状态,则需要添加 routerLinkActive[routerLinkActiveOptions]="{exact: true}"到你的仪表板 li 节点。

此外,您不需要通过 ngClass 设置 active 类,因为 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>

关于javascript - 基于 routerLinkActive 的 Angular 高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56922414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com