https://angular.io/api/router/RouterLink donne un bon aperçu de la création de liens menant l'utilisateur à une autre route dans Angular4, mais je ne trouve pas comment faire. la même chose par programme nécessitant plutôt que l'utilisateur clique sur un lien
routerLink
directive utilisée de la manière suivante:
<a [routerLink]="/inbox/33/messages/44">Open Message 44</a>
est juste un wrapper autour de la navigation impérative utilisant router
et sa méthode browseByUrl :
router.navigateByUrl('/inbox/33/messages/44')
comme on peut le voir d'après les sources:
export class RouterLink {
...
@HostListener('click')
onClick(): boolean {
...
this.router.navigateByUrl(this.urlTree, extras);
return true;
}
Ainsi, chaque fois que vous avez besoin de diriger un utilisateur vers un autre itinéraire, injectez simplement la méthode router
et utilisez la méthode navigateByUrl
:
class MyComponent {
constructor(router: Router) {
this.router.navigateByUrl(...);
}
}
Il existe une autre méthode sur le routeur que vous pouvez utiliser - naviguer :
router.navigate(['/inbox/33/messages/44'])
Utiliser
router.navigateByUrl
revient à changer directement la barre d’emplacement: nous fournissons la nouvelle URL "entière". Attendu querouter.navigate
crée une nouvelle URL en appliquant un tableau de commandes transmises, un correctif, à l'URL actuelle.Pour voir clairement la différence, imaginons que l'URL actuelle est
'/inbox/11/messages/22(popup:compose)'
.Avec cette URL, appeler
router.navigateByUrl('/inbox/33/messages/44')
aura pour résultat'/inbox/33/messages/44'
. Mais l'appelant avecrouter.navigate(['/inbox/33/messages/44'])
aura pour résultat'/inbox/33/messages/44(popup:compose)'
.
Plus d'informations dans les documents officiels .
En plus de la réponse fournie, il y a plus de détails dans navigate
. A partir des commentaires de la fonction:
/**
* Navigate based on the provided array of commands and a starting point.
* If no starting route is provided, the navigation is absolute.
*
* Returns a promise that:
* - resolves to 'true' when navigation succeeds,
* - resolves to 'false' when navigation fails,
* - is rejected when an error happens.
*
* ### Usage
*
* ```
* router.navigate(['team', 33, 'user', 11], {relativeTo: route});
*
* // Navigate without updating the URL
* router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});
* ```
*
* In opposite to `navigateByUrl`, `navigate` always takes a delta that is applied to the current
* URL.
*/
Le Guide du routeur contient plus de détails sur la navigation par programmation.