Angular 多条路径的 routerLinkActive
Angular routerLinkActive for multiple paths
在我的 Angular 5 项目中,我有一个 bootstrap 导航栏菜单。 routerLinkActive
当路径的开头与菜单的路由链接匹配时,确实可以很好地工作,例如:
<li [routerLinkActive]="['active']">
<a [routerLink]="['/entity/teacher']">Teacher</a>
</li>
上面的代码很好地激活了“/entity/teacher/add”和更多
的菜单项
问题是,我有一种 'catch-all' 导航项,其中包含未排列的内容:
<li [routerLinkActive]="['active']">
<a [routerLink]="['/config']">Configuration</a>
</li>
我希望此项目也针对路径 /tasks
和 /entity/settings
突出显示,而不仅仅是 /config
。
问题是,我无法更改应用程序的路由。如何让菜单项与其他路由路径以及 routerLink 中的路由路径对齐?
您可以使用模板引用变量来获取对外部路由的引用,然后在它们处于活动状态时应用 class。您可以 link 它们到现有的 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>
指定有多个 routerLinks
但只有一个 routerLinkActive
显示突出显示或 enabled.for 这工作正常
对我来说。
<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>
如果您正在寻找如何防止多个链接激活,有一个 [routerLinkActiveOptions]="{exact: true}"
选项:
<a routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">home</a>
这对我有用:
<li [routerLinkActive]="['active']">
<a routerLink="/config">Configuration</a>
<a routerLink="/tasks" style="display: none"></a>
<a routerLink="/entity/settings" style="display: none"></a>
</li>
在我的 Angular 5 项目中,我有一个 bootstrap 导航栏菜单。 routerLinkActive
当路径的开头与菜单的路由链接匹配时,确实可以很好地工作,例如:
<li [routerLinkActive]="['active']">
<a [routerLink]="['/entity/teacher']">Teacher</a>
</li>
上面的代码很好地激活了“/entity/teacher/add”和更多
的菜单项问题是,我有一种 'catch-all' 导航项,其中包含未排列的内容:
<li [routerLinkActive]="['active']">
<a [routerLink]="['/config']">Configuration</a>
</li>
我希望此项目也针对路径 /tasks
和 /entity/settings
突出显示,而不仅仅是 /config
。
问题是,我无法更改应用程序的路由。如何让菜单项与其他路由路径以及 routerLink 中的路由路径对齐?
您可以使用模板引用变量来获取对外部路由的引用,然后在它们处于活动状态时应用 class。您可以 link 它们到现有的 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>
指定有多个 routerLinks
但只有一个 routerLinkActive
显示突出显示或 enabled.for 这工作正常
对我来说。
<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>
如果您正在寻找如何防止多个链接激活,有一个 [routerLinkActiveOptions]="{exact: true}"
选项:
<a routerLink="/" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">home</a>
这对我有用:
<li [routerLinkActive]="['active']">
<a routerLink="/config">Configuration</a>
<a routerLink="/tasks" style="display: none"></a>
<a routerLink="/entity/settings" style="display: none"></a>
</li>