我已经在另一个问题中回答了这个问题,但我相信它也可能与这个问题有关。这是原始答案的链接:
Angular 2:如何使用参数确定活动路线?
我一直在尝试设置活动类,而不必确切知道当前位置是什么(使用路线名称)。到目前为止,我得到的最好的解决方案是使用类中可用的函数isRouteActiveRouter
。
router.isRouteActive(instruction): Boolean
接受一个参数,它是一个路由Instruction
对象并返回true
或者false
该指令是否对当前路由成立。您可以Instruction
使用Router
的generate(linkParams: Array)生成路由。LinkParams 遵循与传递给routerLink指令(例如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>
到目前为止,这是我对这个问题的首选解决方案,它可能对您也有帮助。