web-dev-qa-db-fra.com

Passez NavigationExtras à routerLink dans le modèle

Je souhaite désactiver la modification de l'URL lors du routage dans mon Angular 2 app.

Je sais que skipLocationChange: true Doit être transmis en tant que paramètre NavigationExtras au routeur.

Ma question est:

Est-il possible de passer NavigationExtras à un routerLink depuis l'intérieur du modèle?

Ce que j'ai essayé:

<h1>
  {{title}}
</h1>

<ul>
    <li><a [routerLink]="['route1', { skipLocationChange: true }]">Route1</a></li>
    <li><a [routerLink]="['route2', { skipLocationChange: true }]">Route2</a></li>
</ul>

<router-outlet></router-outlet>

mais ça ne marche pas.

Après avoir cliqué sur un lien, l'itinéraire devient http://localhost:4200/route2;skipLocationChange=true

Je ne veux pas utiliser this.router.navigate(['route1], {skipLocationChange: true) dans mon contrôleur, car je perds alors routerLinkAtive la surbrillance.

12

Il n'y a aucun moyen (pour l'instant et afaik) d'avoir à la fois routerLinkActive et skipLocationChange simultanément et d'attendre le résultat souhaité. Vous pouvez, selon api , ajouter des options, mais il n'y a pas d'option skipLocationChange.

Vous pouvez cependant utiliser le NavigationExtras du routeur en combinaison avec ActivatedRoute et vous baser sur cela, que ce soit ou non le lien doit être actif

mise à jour

Puisque 2.3.0-beta.0 vous pouvez ajouter l'option skipLocationChange à la directive routerLink:

<li><a [routerLink]="['route1']" skipLocationChange>Route1</a></li>
19
PierreDuc

vous pouvez fournir n'importe laquelle des propriétés NavigationExtras sur la balise routerLink elle-même en tant qu'attributs individuels.

<a [routerLink]="['/user/bob']" [queryParams]="{debug: true}" fragment="education">
  link to user component
</a>

le documentation sur les attributs RouterLink est clair.

7
Yinon