Angulaire: Comment déterminer l'itinéraire actif avec les paramètres?
J'ai lu cette question sur la façon de déterminer l'itinéraire actif, mais c'est toujours pas clair pour moi comment faire pour déterminer un itinéraire actif avec les paramètres?
Droit maintenant, je fais comme ceci:
<a [routerLink]="['/Profile/Feed', {username: username}]"
[ngClass]="{active: getLinkStyle('/profile/john_doe/feed')}">
Feed for {{username}}
</a>
Et à l'intérieur de mon composant:
getLinkStyle(path:string):boolean {
console.log(this._location.path()); //logs: '/profile/john_doe/feed'
return this._location.path() === path;
}
Et que cela fonctionne parce que je suis de passage le nom d'utilisateur comme une chaîne de caractères. Est-il possible de faire cela avec passant le paramètre correct??
Vous pouvez injecter $routingPatams à votre contrôleur et d'obtenir un paramètre de votre itinéraire.
Oui, je sais, en fait
Ce que je veux faire, c'est quelque chose comme:
Vous pouvez le faire comme '/profil/'+nom d'utilisateur+'/'alimentation
Oui merci @CyberAleks. Essayé, mais mon éditeur n'a pas donné le droit de syntaxe couleurs.. Afin de ne pas le tester, stupide haha! Merci!
Oui, je sais, en fait
username
est à partir de la RouteParams. Mais comment puis-je transmettre cela à partir de mon code HTML pour mon composant? @CyberAleksCe que je veux faire, c'est quelque chose comme:
[ngClass]="{active: getLinkStyle('/profile/{{username}}/feed')}"
, mais bien sûr, cela ne fonctionnera pas..Vous pouvez le faire comme '/profil/'+nom d'utilisateur+'/'alimentation
Oui merci @CyberAleks. Essayé, mais mon éditeur n'a pas donné le droit de syntaxe couleurs.. Afin de ne pas le tester, stupide haha! Merci!
OriginalL'auteur Aico Klein Ovink | 2016-01-02
Vous devez vous connecter pour publier un commentaire.
Il suffit de cocher l'auto-défini
router-link-active
classe dea
élément.Est-il possible de définir automatiquement un
active
classe si lerouter-link-active
classe est-elle appliquée? Parce que la plupart des modèles de CSS requièrent que d'autres noms de classe et je ne veux pas modifier le modèle. @AicoKleinOvink autant que je sache, il était déjà là dans les dernières versions alpha.Ils ont mis sur le 2.0.0-alpha.37 (2015-09-09) exactement. github.com/angular/angular/issues/3209
Je ne pourrais pas changer la css par défaut nom, il est codé en dur. Je me suis aperçut qu'il existe une isRouteActive: propriété booléenne pour chaque [routerLink], mais je ne suis pas en mesure de référence.
Semble
routerLinkActive
directive ne fonctionne que surLink Params( /foo/bar )
, pas pourQuery Params ( /foo;value=bar )
.OriginalL'auteur iuristona
Avec la nouvelle place et à venir Angulaire 2 routeur (à version 3.0-alpha.7 que j'écris ces lignes), c'est très simple.
Tout ce que vous devez faire est d'utiliser la
[routerLinkActive]
directive dans votre lien.C'est ce que vous allez utiliser lorsque Angulaire 2 est sorti pour de vrai, et non plus une release candidate. Je suis à l'aide de l'alpha de l'routeur maintenant et ne pas avoir de problèmes.
Voici Gratter en démontrant qu'il. Vous pouvez voir que les liens rouges que vous cliquez sur eux. C'est la directive de l'affectation de la
active
classe. Vous pouvez utiliser n'importe quel nom de classe de votre choix, bien sûr.OriginalL'auteur Michael Oryl
Angulaire 2 rc1
router.isRouteActive
n'existe plus.Je ne pouvais pas trouver une solution de travail n'importe où, mais j'ai été en mesure de le résoudre de cette façon (la méthode personnalisée isActiveRoute fait le truc):
App.composante.ts:
App.template.html:
Comment modifier la isActiveRoute fonction pour prendre en charge les paramètres de la route?
OriginalL'auteur Mcanic
J'ai essayé de régler le active de la classe sans avoir à connaître précisément ce qui est de l'emplacement actuel (en utilisant le nom de la route). C'est la meilleure solution que j'ai obtenu à ce jour.
C'est la façon dont le RouteConfig ressemble (j'ai modifié un peu à ressembler à ce que vous voulez faire):
Et la Affichage ressemblerait à ceci:
Cela a été mon préféré de la solution pour le problème jusqu'à présent, il pourrait être utile pour vous.
Toujours penser à quelque chose comme de l'interface utilisateur-sref-actif à partir de l'impressionnant ui-router serait génial..
Ok, j'ai essayé votre solution de @Alex, mais ne peut pas le faire fonctionner. C'est la partie de mon code:
<a class="main" [routerLink]="['/Profile/Feed', {username: profileUser.username}]" [class.active]="router.isRouteActive(router.generate(['/Profile/Feed', {username: profileUser.username}]))"> <h3><span class="fa fa-home"></span></h3> Profiel </a>
Il semble correct, vous obtenez des erreurs par toute les chances (si vous êtes ce serait ceux-être)? Juste un rappel, vous devez importer le
Router
.import {ROUTER_DIRECTIVES, Router} from 'angular2/router';
Ne pas retourner les erreurs, les renvoie simplement comme faux..
OriginalL'auteur Alex Santos
essayez ceci :
OriginalL'auteur VISHNU Radhakrishnan
Vous pouvez utiliser le nouveau service de Angular2 package commun: https://angular.io/docs/js/latest/api/router/Location-class.html#!#chemin-ancre
Veuillez noter: Documentation dit à l'importation de
router
, mais la dernière betta version que j'ai estLocation
services danscommon
.OriginalL'auteur Brian
Angulaire de la version 4+, déterminer un itinéraire actif dans le modèle est assez facile car il y a une accumulation dans la directive à cette fin nom
routerLinkActive
que vous pouvez utiliser de la manière suivante:OriginalL'auteur asmmahmud