Clé*_*ops 5 javascript router typescript angular
我正在使用 Angular 2 开展一个项目,但遇到了一个问题。我创建了一个链接组件,我可以这样使用它:
<cmp-link [routeName]="['Channel/Add']">Add channel</cmp-link>
该组件检查当前路由是否与通过参数传递的路由相同,如果是,则应用一个类。如何检查当前 url 是否与 提供的 url 相同routeName?好吧,它很丑。
this.isCurrentRoute = this.normalize(currentUrl) === this.routeName[0].toLowerCase();
Run Code Online (Sandbox Code Playgroud)
你不喜欢吗?我也不。我想检查当前是否使用路线名称激活了路线。
(在这种情况下,Channel/Add是路由名称)。
我不知道如何使用路线名称来做到这一点。我看过Router和Instruction。
旧路由器实现的解决方案
\n\n我认为这可以完成这项工作:
\n\nrouter.isRouteActive(router.generate([\'Home\']))\nRun Code Online (Sandbox Code Playgroud)\n\n这不是一个很好的解决方案,但我知道的唯一一个。
\n\n需要router.isRouteActive一个Instruction并且无法管理字符串本身,因此您需要使用以下命令生成Instruction它router.generate()生成它。
来源:https ://angular.io/docs/ts/latest/api/router/Router-class.html
\n\n笔记
\n\n正如 @Cl\xc3\xa9ment Flodrops 提到的,这只适用于平面路由结构。据我所知,目前不可能很好地存档它。
\n\n也许可以使用 的 private _childeRouter,Router但要访问此属性,我们需要覆盖Router。
所以我建议等待一段时间,也许Router会支持一次这个操作。
\n\n编辑:新路由器 3.0.0-alpha
\n\n使用新路由器,您可以添加routerLinkActive="class",如果 routerLink 处于活动状态,这将添加该类。
如果 routerLink 没有直接位于具有 routerLinkActive 的标签上,也可以工作:
\n\n<li role="menuitem" routerLinkActive="active">\n <a href="" [routerLink]="[\'/home\']" title="home" class="control-icon">\n <span class="fa fa-home"></span>\n </a>\n</li>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |