J'essaie d'implémenter routerLinkActive dans mon application, mais je suis confronté au problème suivant: la classe est activée pour plusieurs liens. Voici comment je le fais
<ul class="nav nav-tabs">
<li role="presentation" [routerLinkActive]="['active']"><a [routerLink]="['/']">Home</a></li>
<li role="presentation" [routerLinkActive]="['active']"><a [routerLink]="['/about']">About</a></li>
<li role="presentation" [routerLinkActive]="['active']"><a [routerLink]="['/contact']" >Contact Us</a></li>
</ul>
Ici c'est à quoi ça ressemble
Ici, c'est à quoi ça ressemble dans dev-tools Et ma barre d'adresse
Essayez de définir [routerLinkActiveOptions]="{exact: true}"
en HTML comme ci-dessous:
<ul class="nav nav-tabs">
<li role="presentation" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}"><a [routerLink]="['/']">Home</a></li>
<li role="presentation" routerLinkActive="active"><a [routerLink]="['/about']">About</a></li>
<li role="presentation" routerLinkActive="active"><a [routerLink]="['/contact']" >Contact Us</a></li>
</ul>
RouterLinkActive tronque la route en cours et essaie de faire correspondre ses parties avec les RouterLinks que vous avez fournis. Dans cet esprit, route /
sera apparié n'importe où car c'est le parent même de tous les autres itinéraires (comme /about
, /contact
, etc. comme il s'agit de /
+ route-path
). Pour simplifier, ce n'est pas un bug, c'est parfois une fonctionnalité nécessaire dans votre application pour faire correspondre plusieurs itinéraires. Pour éviter cela, vous pouvez spécifier que routerLinkActiveOptions
corresponde exactement à votre itinéraire. Cela signifie que cela ne correspondra pas aux routes parentes mais tentera uniquement de trouver le routeurLink fourni pour cette route exacte.