Vous pouvez réaliser ce que vous voulez avec un truc à l'aide de la résoudre l'option d'un itinéraire. Résoudre les quelques données de la valeur que Angular2 obtiendra pour l'itinéraire être initialisé. Plus de détails vous pouvez trouver ici dans la documentation officielle.
J'ai essayé cette approche et il fonctionne. Exemple:
Ajoutez à cela le fournisseur de la section (plus importer les classes nécessaires à partir de Routage)
@NgModule({
providers: [
{
provide: 'externalUrlRedirectResolver',
useValue: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) =>
{
window.location.href = (route.data as any).externalUrl;
}
}
]
})
Ensuite, vous pouvez définir votre itinéraire comme ceci:
{
path: 'test',
component: AnyRandomComponent,
resolve: {
url: 'externalUrlRedirectResolver'
},
data: {
externalUrl: 'http://www.google.com'
}
}
Ce sera redirigé vers l'URL externe. C'est un peu un hackish manière vraiment. J'ai essayé d'atteindre le résultat sans l'aide du composant à tous, mais vous devez utiliser redirectTo
ou component
ou children
ou loadChildren
. redirectTo
ne déclenchent pas la résoudre et je ne suis pas sûr au sujet des enfants, si vous pouvez faire l'expérience.
Vous pouvez la mettre en œuvre dans une classe de nice plutôt que directement de la fonction de fournisseur. Plus d'infos dans la documentation (voir la référence ci-dessus).
P. S. j'aurais vraiment préféré utiliser une redirection composant de moi-même, je pense. Utilisez simplement le truc avec les données et l'obtention de l'état du routeur externalUrl
pour obtenir ce que d'un paramètre.