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:
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.
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>
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.