使用 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">
☰
</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 之后重新加载小部件