Angular routerLinkActive用于多个路径

时间:2018-03-05 15:54:10

标签: angular routing angular2-routing routerlinkactive

在我的Angular 5项目中,我有一个bootstrap导航栏菜单。当路径的开头与菜单的routerlink匹配时,routerLinkActive可以很好地工作,例如:

<li [routerLinkActive]="['active']">
  <a [routerLink]="['/entity/teacher']">Teacher</a>
</li>

上面的代码很好地激活了`/ entity / teacher / add'和更多

的菜单项

问题是,我有一种“全能”导航项目,其中包含不排队的内容:

<li [routerLinkActive]="['active']">
  <a [routerLink]="['/config']">Configuration</a>
</li>

我希望此项目突出显示路径/tasks/entity/settings,不仅适用于/config

问题是,我无法更改应用的路由。如何让菜单项与其他路由路径以及routerLink中的路由路由对齐?

3 个答案:

答案 0 :(得分:4)

您可以使用模板引用变量来获取对外部路由的引用,然后在它们处于活动状态时应用该类。您可以将它们链接到现有的routerLinkActive元素或隐藏的元素。以下是使用隐藏方法的示例。

<li routerLinkActive="active" [ngClass]="{'active': tasksActive.isActive || settingsActive.isActive }">
  <a [routerLink]="['/config']">Configuration</a>
</li>
<a routerLink="/tasks" routerLinkActive #tasksActive="routerLinkActive" style="display: none"></a>
<a routerLink="/entity/settings" routerLinkActive #settingsActive="routerLinkActive" style="display: none"></a>

答案 1 :(得分:2)

如果您正在寻找如何防止多个链接处于活动状态,则有一个[routerLinkActiveOptions]="{exact: true}"选项:

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

答案 2 :(得分:0)

根据指定有多个routerLinkActive,但只有一个<a class="nav-link" href="javascript:void(0)" routerLink='/rulesConfiguration' routerLinkActive='active' [ngClass]="{'active': createRules.isActive}"><i class="nav-icon fa fa-list-alt "></i>Rules Configuration</a> <a class="nav-link" href="javascript:void(0)" routerLink="/createRules" routerLinkActive #createRules="routerLinkActive" style="display: none"><i class="nav-icon fa fa-list-alt "></i>Rules </a> 显示突出显示或已启用。 为我。

            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs-client</artifactId>
                <version>3.2.0</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-hdfs</artifactId>
                <version>3.2.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>3.2.0</version>
            </dependency>