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

Change Active tab in navbar when router.navigate is used

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

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(['']);

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

所以基本上你想在服务中突出显示并调用该服务以在 URL 等于特定状态时应用你的样式。这是通过使用

完成的

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

这是我的 plunker。请注意,无论您使用链接还是按钮,活动选项卡都会发生变化。这些按钮就像您在问题

中问的那样使用 this.router.navigate(['']);