2016-11-22 1 views
2

Je suit la configuration de la route:Rediriger vers la première route autorisée dans Angular 2?

const routes: Routes = [ 
    { path: '', redirectTo: 'customers', pathMatch: 'full' }, 
    { path: 'customers', component: CustomerListComponent, canActivate: [CustomerGuard] }, 
    { path: 'products', component: ProductListComponent, canActivate: [ProductGuard] }, 
    { path: 'sales', component: SalesListComponent, canActivate: [SalesGuard] } 
]; 

Le problème est, je ne « dashbord », seules les pages de gestion de domaine, et bien que chaque utilisateur autorisé aura accès à au moins un d'entre eux, aucun d'entre eux être disponible pour tous les utilisateurs.

Existe-t-il une option à dire: rediriger vers le premier itinéraire, qui peut être activé? Ou j'ai besoin d'écrire un composant virtuel sous le chemin '/' qui ferait une redirection dynamique, basée sur les rôles de l'utilisateur?

Répondre

1

Trois n'est pas possible de rediriger vers la première route disponible. L'utilisation d'une route factice avec un composant factice qui redirige juste en fonction du rôle est la voie à suivre. Vous pouvez également faire la redirection dans un garde https://angular.io/docs/ts/latest/guide/router.html#!#guards mais la route factice aurait besoin d'un composant de toute façon.

Ce que vous pouvez faire est d'utiliser router.resetConfig() pour charger des itinéraires en fonction du rôle comme indiqué dans Dynamic routing based on external data

+0

Je dois donc ce que je pensais, pour créer un rôle à composante « factice » qui me rediriger quelque part, mais ce composant factice n'a pas besoin d'être visuel (modèle, etc.)? –

+0

Vous pouvez simplement utiliser 'template: ''' '. J'ai un 'DummyComponent' dans chaque projet juste pour être en mesure de lister un composant où requis par le routeur mais pas par moi. AFAIR il y a eu récemment une demande de tirage de sorte qu'un composant n'est plus requis dans de tels cas. –