使用 router.navigate 时更改导航栏中的活动选项卡

Posted

技术标签:

【中文标题】使用 router.navigate 时更改导航栏中的活动选项卡【英文标题】:Change Active tab in navbar when router.navigate is used 【发布时间】:2017-01-24 17:45:23 【问题描述】:

我正在使用带有 Bootstrap 4 的 Angular 2。我可以使用以下代码更改活动选项卡:

navbar.component.html

<nav class="navbar navbar-fixed-top navbar-light bg-faded">
  <button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#navbar">
    &#9776;
  </button>
  <div class="collapse navbar-toggleable-xs" id="navbar">
  <div class="container">
    <a class="navbar-brand" [routerLink]="['']">My App</a>
    <ul class="nav navbar-nav navbar-right">
      <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="exact:
true">
        <a class="nav-link" [routerLink]="['']">Home<span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="exact:true">
        <a class="nav-link" [routerLink]="['/about']">About</a>
      </li>
      <li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="exact:true">
        <a class="nav-link" [routerLink]="['/example']">Example</a>
      </li>      
    </ul>
  </div>
  </div>
</nav>

行:

[routerLinkActive]="['active']" [routerLinkActiveOptions]="exact:true"

在切换到当前活动的选项卡时效果很好,但是当我使用以下内容导航到组件时:

this.router.navigate(['']);

活动标签不会改变。有没有办法在像上面那样导航时更改活动选项卡?

【问题讨论】:

它应该是routerLinkActive="active" 而不是[routerLinkActive]="['active']" 两者都有效。 发生了一些奇怪的事情,因为我无法重现该问题。我调用了 this.router.navigate,它为我正确地改变了课程。这是 Angular 路由器的最新版本吗? 你能在 plunker 中重新创建它吗? 我也有类似的问题。检查这个来自官方角度示例的plunker。 【参考方案1】:

因此,基本上您希望在服务中突出显示,并在您的 URL 等于特定状态时调用该服务以应用您的样式。这是通过使用

this.router.url === '/myroute'

这是我的plunker。请注意,无论您使用链接还是按钮,活动选项卡都会发生变化。这些按钮是使用this.router.navigate(['']); 的按钮,就像您在问题中提出的那样

【讨论】:

以上是关于使用 router.navigate 时更改导航栏中的活动选项卡的主要内容,如果未能解决你的问题,请参考以下文章

KendoUI MVVM:在 router.navigate 之后重新加载小部件

如何在角应用程序中单元测试router.navigate

Ionic 5:如何导航到孩子和子孩子

导航到另一条路线后,Can Angccate可以继续吗?

Angular 8 应用程序在使用 router.navigate 时无法检索表单字段值

为啥 routerLink 和 router.navigate() 行为不同?