我已经在另一个问题中回答了这个问题,但我相信它可能也与这个问题有关。以下是原始答案的链接:Angular 2:如何使用参数确定活动路由?
我一直在尝试设置活动类,而不必确切知道当前位置是什么(使用路由名称)。到目前为止,我得到的最佳解决方案是使用类中可用的函数isRouteActive。Router
router.isRouteActive(instruction): Boolean
采用一个参数,该参数是路由对象并返回或该指令是否对当前路由成立。您可以使用 的 generate(linkParams: Array) 生成路由。LinkParams 遵循与传递到路由器链接指令中的值完全相同的格式(例如 ).Instruction
true
false
Instruction
Router
router.isRouteActive(router.generate(['/User', { user: user.id }]))
这就是 RouteConfig 的样子(我稍微调整了一下,以显示参数的用法):
@RouteConfig([
{ path: '/', component: HomePage, name: 'Home' },
{ path: '/signin', component: SignInPage, name: 'SignIn' },
{ path: '/profile/:username/feed', component: FeedPage, name: 'ProfileFeed' },
])
视图将如下所示:
<li [class.active]="router.isRouteActive(router.generate(['/Home']))">
<a [routerLink]="['/Home']">Home</a>
</li>
<li [class.active]="router.isRouteActive(router.generate(['/SignIn']))">
<a [routerLink]="['/SignIn']">Sign In</a>
</li>
<li [class.active]="router.isRouteActive(router.generate(['/ProfileFeed', { username: user.username }]))">
<a [routerLink]="['/ProfileFeed', { username: user.username }]">Feed</a>
</li>
到目前为止,这是我解决问题的首选解决方案,也可能对您有所帮助。