Angular 2 : 检查routeName是否是当前的
Angular 2 : check if routeName is the current one
我正在使用 Angular 2 进行一个项目,但我遇到了一个问题。
我创建了一个 link 组件,我可以像这样使用它:
<cmp-link [routeName]="['Channel/Add']">Add channel</cmp-link>
此组件检查当前路由是否与通过参数传递的路由相同,如果是,则应用 class。如何检查当前 url 是否与 routeName
提供的相同?好丑啊
this.isCurrentRoute = this.normalize(currentUrl) === this.routeName[0].toLowerCase();
你不喜欢吗?我也不。我想检查当前是否使用路由名称激活了路由。
(在本例中,Channel/Add
是路由名称)。
我不知道如何使用路由名称。我看过 Router
和 Instruction
。
旧路由器实现的解决方案
我认为这个灵魂可以胜任:
router.isRouteActive(router.generate(['Home']))
这不是一个很好的解决方案,但我知道的唯一一个。
router.isRouteActive
想要一个 Instruction
并且无法管理字符串本身,因此您需要使用 router.generate()
.[=22= 生成此 Instruction
]
来源:https://angular.io/docs/ts/latest/api/router/Router-class.html
备注
如@Clément Flodrops 所述,这仅适用于平面路由结构。据我所知,目前无法很好地存档。
也许可以使用 Router
的私有 _childeRouter
,但要访问此 属性,我们需要覆盖 Router
- class。
所以我建议再等一段时间,也许Router会支持一次这个操作。
编辑:新路由器 3.0.0-alpha
使用 new router,您可以添加 routerLinkActive="class"
,如果 routerLink 处于活动状态,这将添加 class。
同样有效,如果 routerLink 没有直接在带有 routerLinkActive 的标签上:
<li role="menuitem" routerLinkActive="active">
<a href="" [routerLink]="['/home']" title="home" class="control-icon">
<span class="fa fa-home"></span>
</a>
</li>
我正在使用 Angular 2 进行一个项目,但我遇到了一个问题。 我创建了一个 link 组件,我可以像这样使用它:
<cmp-link [routeName]="['Channel/Add']">Add channel</cmp-link>
此组件检查当前路由是否与通过参数传递的路由相同,如果是,则应用 class。如何检查当前 url 是否与 routeName
提供的相同?好丑啊
this.isCurrentRoute = this.normalize(currentUrl) === this.routeName[0].toLowerCase();
你不喜欢吗?我也不。我想检查当前是否使用路由名称激活了路由。
(在本例中,Channel/Add
是路由名称)。
我不知道如何使用路由名称。我看过 Router
和 Instruction
。
旧路由器实现的解决方案
我认为这个灵魂可以胜任:
router.isRouteActive(router.generate(['Home']))
这不是一个很好的解决方案,但我知道的唯一一个。
router.isRouteActive
想要一个 Instruction
并且无法管理字符串本身,因此您需要使用 router.generate()
.[=22= 生成此 Instruction
]
来源:https://angular.io/docs/ts/latest/api/router/Router-class.html
备注
如@Clément Flodrops 所述,这仅适用于平面路由结构。据我所知,目前无法很好地存档。
也许可以使用 Router
的私有 _childeRouter
,但要访问此 属性,我们需要覆盖 Router
- class。
所以我建议再等一段时间,也许Router会支持一次这个操作。
编辑:新路由器 3.0.0-alpha
使用 new router,您可以添加 routerLinkActive="class"
,如果 routerLink 处于活动状态,这将添加 class。
同样有效,如果 routerLink 没有直接在带有 routerLinkActive 的标签上:
<li role="menuitem" routerLinkActive="active">
<a href="" [routerLink]="['/home']" title="home" class="control-icon">
<span class="fa fa-home"></span>
</a>
</li>