我有一个使用 Angular 8 构建的应用程序。Routerlinkactive
一开始没有在动态生成的路由上激活,但是当我单击同一模块中的一些其他链接并返回时,它就可以工作了。routerLinkActive
设置在 中,当基于url 参数UserComponent
加载child() 时,它应该激活导航中的锚点。UserProfileComponent
我尝试了很多解决方案,例如使用模板变量
[routerLinkActive]="['']" [ngClass]="rla.isActive ? 'mat-accent' : 'mat-primary'" #rla="routerLinkActive"
或应用[routerLinkActiveOptions]="{exact:true}"
,但没有一个是有帮助的。
这是我的 HTML 代码的最后一个版本。
<ul role="list" class="list-horizontal">
<li>
<a class="mat-primary"
routerLinkActive="mat-accent"
[routerLink]="'/user/profile/' + profile?._id"
mat-raised-button>Profile </a>
</li>
<li>
<a class="mat-primary"
[routerLink]="'/user/posts/'"
[routerLinkActive]="['mat-accent']"
mat-raised-button>Posts</a>
</li>
<li>
<a class="mat-primary"
[routerLink]="'/user/favorite-posts/'"
[routerLinkActive]="['mat-accent']"
mat-raised-button>Favourites</a>
</li>
</ul>
我猜问题出在动态生成的路线中(基于用户ID),
例如http://my-domain/user/profile/5dd58c41409cccea2c9296f3
,因为当我直接访问其他组件时,例如http://my-domain/user/posts
然后routerLinkActive
工作正常将active
类设置为相应的链接。这就是我为当前模块配置路由的方式。
const routes: Routes = [{
path: '',
component: UserComponent,
children: [
{
path: 'profile/:id',
component: UserProfileComponent
},
{
path: 'posts',
component: UserPostsComponent
},
{
path: 'favorite-posts',
component: UserFavoritePostsComponent
}
]
}];
任何提示表示赞赏。谢谢!