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

时间:2016-09-16 13:14:23

标签: html css angular bootstrap-4

我正在使用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(['']);

活动标签不会更改。有没有办法在上面导航时更改活动标签?

1 个答案:

答案 0 :(得分:2)

所以基本上你想要在服务中使用高亮度,并在URL等于特定状态时调用该服务来应用你的风格。这是通过使用

完成的

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

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