2016-11-22 4 views
2

Ich habe folgende Route Konfiguration:Weiterleitung zur ersten erlaubten Route in 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] } 
]; 

Das Problem ist, habe ich keine ‚dashbord‘, nur Domain-Verwaltung Seiten, und obwohl jeder autorisierte Benutzer Zugriff auf zumindest einer von ihnen haben wird, keiner von ihnen wird für alle Benutzer verfügbar sein.

Gibt es eine Option zu sagen: Umleitung zur ersten Route, die aktiviert werden kann? Oder ich muss eine virtuelle Komponente unter Pfad '/' schreiben, die dynamische Umleitung basierend auf Benutzerrollen tun würde?

Antwort

1

Drei ist keine Möglichkeit, auf die erste verfügbare Route umzuleiten. Die Verwendung einer Dummy-Route mit einer Dummy-Komponente, die abhängig von der Rolle nur umgeleitet wird, ist der Weg zu gehen. Sie können die Umleitung auch in einem Guard https://angular.io/docs/ts/latest/guide/router.html#!#guards durchführen, aber die Dummy-Route würde sowieso eine Komponente benötigen.

Was Sie auch tun können, ist router.resetConfig() mit Routen auf der Rolle abhängig laden wie in Dynamic routing based on external data

+0

gezeigt Also das ist, was ich dachte, ich muss eine Rolle zu ‚Dummy‘ Komponente erstellen, die irgendwo umleitet mich, aber diese Dummy-Komponente muss nicht visuell sein (Vorlage usw.)? –

+0

Sie können einfach 'template: ''' verwenden. Ich habe eine "DummyComponent" in jedem Projekt, nur um eine Komponente auflisten zu können, die vom Router benötigt wird, aber nicht von mir. AFAIR gab es kürzlich eine Pull-Anfrage, so dass in solchen Fällen keine Komponente mehr benötigt wird. –