我有一个带有以下路线的项目:
{ path: '', component: GamesListingComponent },
{ path: 'inicio', component: HomeComponent },
{ path: 'listar',
children: [
{ path: '', component: HomeComponent },
{ path: 'fabricantes', component: ManufacturesListingComponent },
{ path: 'plataformas', component: PlatformsListingComponent },
{ path: 'usuarios', component: UsersListingComponent },
{ path: 'jogos', component: GamesListingComponent },
{ path: '**', component: HomeComponent }
]
},
{ path: 'cadastrar',
children: [
{ path: '', component: HomeComponent },
{ path: 'fabricantes', component: ManufacturesRegisterComponent },
{ path: 'plataformas', component: PlatformsRegisterComponent },
{ path: 'usuarios', component: UsersRegisterComponent },
{ path: 'jogos', component: GamesRegisterComponent },
{ path: '**', component: HomeComponent }
]
},
{ path: '**', component: GamesListingComponent }
,我希望仅通过儿童路由的名称启用RouterLinkactive,例如:
访问"/listar/jogos"one_answers"/cadastrar/jogos"时,想要访问这两条路线相同的路由链接。
header.html
<div class="jumbotron">
<p class="text-center title"><a [routerLink]="['/inicio']">Lightning Games</a></p>
<p class="text-center">A sua loja de jogos desde o seu primeiro dia</p>
</div>
<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav mr-auto">
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/inicio']">Início <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/listar', 'plataformas']">Plataformas</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/listar', 'fabricantes']">Fabricantes</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/listar', 'usuarios']">Usuários</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/listar', 'jogos']">Jogos</a>
</li>
</ul>
</div>
</nav>
- 如果您想让的路线活动
添加[routerLinkActiveOptions]="{exact:true}"
将使活动类仅适用于精确的路由匹配。
如果您想要的话,请如下更新<li>
标签:
<li class="nav-item" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}">
<a class="nav-link" [routerLink]="['/inicio']">Início <span class="sr-only">(current)</span></a>
</li>
- 如果您想使多个类似路由的路由链接处于活动状态
查看我从官方的角路由示例之一中修改的这个plunkr代码。https://plnkr.co/edit/wwyvfxdhbsa8tycpsnsf?p=preview
注意两件事:
- 在app-routing.module.ts中,您会看到有两种类似的路线:
{ path: 'heroes/:id', component: HeroDetailComponent },
{ path: 'heroes', component: HeroesComponent }
- 在app.component.ts(在嵌入式模板代码中(您会看到它们是一条路线:
<routerLink="/heroes" routerLinkActive="active">Heroes</a>
此路线匹配App -Routing.module.ts中设置的两个路径 - 这意味着它将适用于以/HEROES
开头的任何路线应用活动类别更新:
在您的示例中,您可以通过将路由更改为以下内容来做到这一点:
app.routes.ts
const appRoutes: Routes = [
{ path: '', component: GamesListingComponent },
{ path: 'inicio', component: HomeComponent },
{ path: '', component: HomeComponent },
{ path: 'jogos', component: GamesListingComponent },
{ path: 'fabricantes', component: ManufacturesListingComponent },
{ path: 'plataformas', component: PlatformsListingComponent },
{ path: 'usuarios', component: UsersListingComponent },
{ path: 'jogos/cadastrar', component: GamesRegisterComponent },
{ path: 'fabricantes/cadastrar', component: ManufacturesRegisterComponent },
{ path: 'plataformas/cadastrar', component: PlatformsRegisterComponent },
{ path: 'usuarios/cadastrar', component: UsersRegisterComponent },
{ path: '**', component: GamesListingComponent }
];
export const routing = RouterModule.forRoot(appRoutes);`
header.component.html
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/inicio']">Início <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/plataformas']">Plataformas</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/fabricantes']">Fabricantes</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['/usuarios']">Usuários</a>
</li>
<li class="nav-item" [routerLinkActive]="['active']" >
<a class="nav-link" [routerLink]="['/jogos']">Jogos</a>
</li>
xxx-listing.component.html
<a [routerLink]="['/jogos/cadastrar']" class="btn btn-primary">
Novo Jogo
</a>
如果要激活两个链接的路由,请像这样更改html文件,
<nav class='navbar navbar-expand navbar-light bg-light'>
<div class='width-100'>
<div class='float-left'>
<ul class='nav nav-pills'>
<li><a class='nav-link' [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}"[routerLink]="['/abc']">Abc</a></li>
<li class="nav-link" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/def']" >Def
<a routerLink="/ghi"></a>
</li>
</ul>
</div>
</div>
</nav>
并在app-module.ts文件中定义您的路由,
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot([
//, canDeactivate : ['canDeactivateCreateEmployee']},
{ path: 'abc', component: AbcComponent },
{ path: 'def', component: DefComponent },
{ path: 'ghi', component: GhiComponent},
{ path: '', redirectTo: 'AbcComponent', pathMatch: 'full' },
{ path: '**', redirectTo: 'AbcComponent', pathMatch: 'full' }
])
],
这将使两个URL(def,GHI(