首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个RouterLinkActive同时触发CSS类

多个RouterLinkActive同时触发CSS类
EN

Stack Overflow用户
提问于 2021-06-07 21:39:38
回答 1查看 33关注 0票数 0

为了使用routerLink,我使用了多个<a>标签。当我第一次加载我的主页时,由于routerLinkActive,主页图标(在aMenuItems中)有active类,而数组的其余部分aMenuItems没有。这是一种良好的行为。

但是,bottom-group中的两个<a>标记都将active类作为主页图标触发。我尝试将routerLinkActiveOptions中的属性exact设置为true,但没有任何更改。一旦我选择了主页以外的其他页面,这个bug就消失了。

HTML:

代码语言:javascript
复制
<div class="top-group">
    <a
        *ngFor="let oItem of aMenuItems"
        class="menu-item"
        [routerLink]="oItem.link"
        routerLinkActive="active"
        [routerLinkActiveOptions]="{ exact: true }"
    >
        <mat-icon>{{oItem.icon}}</mat-icon>
        <p>
            {{oItem.designation}}
        </p>
    </a>
</div>
<div class="bottom-group">
    <a
        class="menu-item"
        [routerLink]="routerLinkMarketPlace"*
        routerLinkActive="active"
        [routerLinkActiveOptions]="{ exact: true }"
    >
        <mat-icon>apps</mat-icon>
        <p>applications</p>
    </a>
    <a
        class="menu-item"
        [routerLink]="routerLinkSettings"
        routerLinkActive="active"
        [routerLinkActiveOptions]="{ exact: true }"
    >
        <mat-icon>settings</mat-icon>
        <p>paramètres</p>
    </a>
</div>
EN

回答 1

Stack Overflow用户

发布于 2021-06-08 16:24:37

我找到了我的问题的解决方案:

在HTML语言中,我使用路由器中的isActive属性将routerLinkActive替换为类条件。

代码语言:javascript
复制
    <a
        class="menu-item"
        [routerLink]="routerLinkSettings"
        [class.active]="router.isActive(routerLinkSettings)"
        [routerLinkActiveOptions]="{ exact: true }"
    >
        <mat-icon>settings</mat-icon>
        <p>parameters</p>
    </a>

您还需要在.ts中插入路由器

代码语言:javascript
复制
    constructor(private router: Router) {
        super();
    }

希望它能帮助路过的人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67872758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档