在Angular中,如何确定活动路由?

27 浏览
0 Comments

在Angular中,如何确定活动路由?

注意:此处有许多不同的答案,大部分曾经都是有效的。事实是,随着 Angular 团队不断更改其路由器,可行的解决方案已经变了好几次。将来成为 Angular 中的关键路由器版本的路由器 3.0 版本会破坏许多这些解决方案,但提供了自己的非常简单的解决方案。截至 RC.3,优选的解决方案是按照这个答案中所示使用 [routerLinkActive]

在 Angular 应用程序(在我编写本文时为 2.0.0-beta.0 发布)中,如何确定当前活动的路由是什么?

我正在开发一个使用 Bootstrap 4 的应用程序,并且我需要一种方法在将其关联的组件显示在 标记中时标记导航链接/按钮为活动状态。

我知道,当按钮被点击时我可以自己维护状态,但这不能覆盖多个路径进入相同路由的情况(例如主导航菜单以及主组件中的本地菜单)。

任何建议或链接将不胜感激。谢谢。

admin 更改状态以发布 2023年5月24日
0
0 Comments

我在另一个问题中回答过这个问题,但我认为这对这个问题也很相关。这是原始答案的链接:
Angular 2:如何确定带参数的活动路由?

我一直在尝试设置活动类,而不必知道当前位置(使用路由名称)是什么。到目前为止,我找到的最佳解决方案是使用Router类中的isRouteActive函数。

router.isRouteActive(instruction): Boolean接受一个参数,即路由Instruction对象,并返回truefalse,表示该指令是否对当前路由有效。您可以使用 Routergenerate(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会像这样:

  • Home
  • Sign In
  • Feed
  • 到目前为止,这一直是我关于这个问题的首选解决方案,它可能对你也有帮助。

    0
    0 Comments

    \n\n使用新的Angular路由器,您可以在所有链接上添加`[routerLinkActive]=\"[\'your-class-name\']\"`属性:

    Home
    

    \n\n如果只需要一个类,则可以使用简化的非数组格式:

    Home
    

    \n\n或者只需要一个类的更简单格式:

    Home
    

    \n\n有关更多信息,请参见“不良记录的`routerLinkActive`指令”。(我主要是通过尝试和错误弄清楚这一点的。):此处。\n\n更新:现在可以在此处找到`routerLinkActive`指令的更好文档。(感谢下面评论区的@Victor Hugo Arango A.)

    0