在Angular中,如何确定活动路由?
在Angular中,如何确定活动路由?
注意:此处有许多不同的答案,大部分曾经都是有效的。事实是,随着 Angular 团队不断更改其路由器,可行的解决方案已经变了好几次。将来成为 Angular 中的关键路由器版本的路由器 3.0 版本会破坏许多这些解决方案,但提供了自己的非常简单的解决方案。截至 RC.3,优选的解决方案是按照这个答案中所示使用 [routerLinkActive]
。
在 Angular 应用程序(在我编写本文时为 2.0.0-beta.0 发布)中,如何确定当前活动的路由是什么?
我正在开发一个使用 Bootstrap 4 的应用程序,并且我需要一种方法在将其关联的组件显示在 标记中时标记导航链接/按钮为活动状态。
我知道,当按钮被点击时我可以自己维护状态,但这不能覆盖多个路径进入相同路由的情况(例如主导航菜单以及主组件中的本地菜单)。
任何建议或链接将不胜感激。谢谢。
我在另一个问题中回答过这个问题,但我认为这对这个问题也很相关。这是原始答案的链接:
Angular 2:如何确定带参数的活动路由?
我一直在尝试设置活动类,而不必知道当前位置(使用路由名称)是什么。到目前为止,我找到的最佳解决方案是使用Router
类中的isRouteActive函数。
router.isRouteActive(instruction): Boolean
接受一个参数,即路由Instruction
对象,并返回true
或false
,表示该指令是否对当前路由有效。您可以使用 Router
的generate(linkParams: Array)生成一个路由Instruction
。LinkParams的格式与传递给routerLink指令的值完全相同(例如router.isRouteActive(router.generate(['/User', { user: user.id }]))
)。
这是 RouteConfig 的样子(我稍微调整了一下以展示 params 的使用):
@RouteConfig([ { path: '/', component: HomePage, name: 'Home' }, { path: '/signin', component: SignInPage, name: 'SignIn' }, { path: '/profile/:username/feed', component: FeedPage, name: 'ProfileFeed' }, ])
而View会像这样:
到目前为止,这一直是我关于这个问题的首选解决方案,它可能对你也有帮助。