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

enter image description here Voici à quoi ça ressemble dans dev-tools enter image description here Et ma barre d'adresse

enter image description here

est-ce que je manque quelque chose parce que je fais comme expliqué dans angulaire docs.

23
demandé sur Jorawar Singh 2016-08-27 16:14:00

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.

67
répondu ranakrunal9 2018-04-20 09:22:21