Pourquoi Angular2 routerLinkActive définit la classe active aux liens multiples?
j'essaie d'implémenter routerLinkActive à mon application mais je suis confronté au problème que c'est la classe de sets active à 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 la façon dont il regarde
Voici à quoi ça ressemble dans dev-tools Et ma barre d'adresse
est-ce que je manque quelque chose parce que je fais comme expliqué dans angulaire docs.
1 réponses
Essayez de définir [routerLinkActiveOptions]="{exact: true}"
pour le 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>
Comment ça marche ?
RouterLinkActive ne découpe la route actuelle et essayer de faire correspondre ses parties avec les RouterLinks que vous avez fournis. Avec cela à l'esprit, la route /
sera apparié n'importe où car c'est le parent pour toutes les autres routes (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 correspondre plusieurs routes. Pour éviter cela, vous pouvez spécifier l' routerLinkActiveOptions
pour correspondre exactement à la route que vous suivez. Cela signifie qu'il ne va pas correspondre aux routes mères, mais va seulement essayer de trouver le routerLink fourni pour cette route exacte.