如何为 Angular 中的两条不同路线将菜单项标记为活动状态
How to mark a menu item as active for two different routes in Angular
我正在使用 routerLinkActive
属性根据当前显示的页面更改菜单项的背景颜色。这是我的 MenuItem 组件的 HTML:
<div class="menu-item" routerLinkActive="active">
<my-icon name="{{ iconName }}"></my-icon>
<a routerLink="{{ routerLink }}">{{ title }}</a>
</div>
使用这个组件时,我必须传入routerLink
属性,比如/home
。
这工作正常,唯一的问题是我希望菜单项“Home”在路线为 base_url/home
以及 base_url/
时被标记为活动。不过我不知道如何实现。
在我的 app.module.ts 文件中,我定义了以下路由:
RouterModule.forRoot(
[
{path: '', component: HomeComponent},
{path: 'home', component: HomeComponent},
...
],
因此,最初显示了 HomeComponent,但相应的菜单项未标记为活动。
我想一种解决方案可能是简单地将 /
作为我的 HomeComponent 的 routerLink 传入,然后将 [routerLinkActiveOptions]="{exact:true}"
添加到 MenuItem 组件。实际上,我已经验证它有效。这个解决方案的问题是,每当我显示我的 HomeComponent 时,我真的希望 /home
在我的 URL 中显示 - 只是为了保持一致性,毕竟它对所有其他页面都是可见的.
有人可以帮我吗?
The issue that I have with this solution is, that I would really like
the /home to show in my URL whenever I am displaying my HomeComponent
您应该使用从默认 ''
路由到 home
路由路径的重定向。然后菜单将按预期工作以及您的上述要求始终以 /home
的形式显示 url
RouterModule.forRoot(
[
{path: '', redirectTo: '/home', pathMatch: 'full' },
{path: 'home', component: HomeComponent},
...
],
您需要添加pathMatch
RouterModule.forRoot(
[
{path: '', redirectTo: 'home', pathMatch: 'full' },
{path: 'home', component: HomeComponent},
],
默认path-match策略是prefix
,或者对于空路径你可以写full
.
我正在使用 routerLinkActive
属性根据当前显示的页面更改菜单项的背景颜色。这是我的 MenuItem 组件的 HTML:
<div class="menu-item" routerLinkActive="active">
<my-icon name="{{ iconName }}"></my-icon>
<a routerLink="{{ routerLink }}">{{ title }}</a>
</div>
使用这个组件时,我必须传入routerLink
属性,比如/home
。
这工作正常,唯一的问题是我希望菜单项“Home”在路线为 base_url/home
以及 base_url/
时被标记为活动。不过我不知道如何实现。
在我的 app.module.ts 文件中,我定义了以下路由:
RouterModule.forRoot(
[
{path: '', component: HomeComponent},
{path: 'home', component: HomeComponent},
...
],
因此,最初显示了 HomeComponent,但相应的菜单项未标记为活动。
我想一种解决方案可能是简单地将 /
作为我的 HomeComponent 的 routerLink 传入,然后将 [routerLinkActiveOptions]="{exact:true}"
添加到 MenuItem 组件。实际上,我已经验证它有效。这个解决方案的问题是,每当我显示我的 HomeComponent 时,我真的希望 /home
在我的 URL 中显示 - 只是为了保持一致性,毕竟它对所有其他页面都是可见的.
有人可以帮我吗?
The issue that I have with this solution is, that I would really like the /home to show in my URL whenever I am displaying my HomeComponent
您应该使用从默认 ''
路由到 home
路由路径的重定向。然后菜单将按预期工作以及您的上述要求始终以 /home
RouterModule.forRoot(
[
{path: '', redirectTo: '/home', pathMatch: 'full' },
{path: 'home', component: HomeComponent},
...
],
您需要添加pathMatch
RouterModule.forRoot(
[
{path: '', redirectTo: 'home', pathMatch: 'full' },
{path: 'home', component: HomeComponent},
],
默认path-match策略是prefix
,或者对于空路径你可以写full
.