2016-08-24 4 views
2

In @NgModule, wie man verschiedene Komponenten wegen etwas wie Benutzertyp zu öffnen?In @NgModule, wie verschiedene Komponenten wegen etwas wie Benutzertyp öffnen

Ich habe einen NgModule, haben zwei verschiedene Seiten, und ich möchte den Benutzertyp durch andere Seite öffnen

@NgModule({ 
imports: [ SharedModule ,RouterModule.forChild([ 
{ path: 'edit', component: EditComponent }, 
{ path: 'view', component: ViewComponent } 
])], 

declarations: [ 
EditComponent, ViewComponent 
], 

}) 
export default class MainModule { 
constructor(private u:UserService){ 
    //------ 

    //------ 
} 
} 

die Umwelt: RC5

+0

Was ist "Benutzertyp" und woher kommt es? Möchten Sie, dass der Benutzertyp in der URL-Leiste des Browsers angezeigt wird? Sie können einfach '

x
y
' –

+0

danke, wie wenn (u.type == 'manager') navigieren ('bearbeiten'); sonst navigiere ('view'); – jjlgjkkl

Antwort

0

den Router Injizieren und rufen navigate(...)

@NgModule({ 
    imports: [ SharedModule ,RouterModule.forChild([ 
    { path: 'edit', component: EditComponent }, 
    { path: 'view', component: ViewComponent }, 
    ])], 
    declarations: [ 
    EditComponent, ViewComponent 
    ], 
}) 
export default class MainModule { 
    constructor(private u:UserService, router:Router,){ 
    if(u.type=='manager') { 
     router.navigate(['/edit']); 
    } else { 
     router.navigate(['/view']); 
    } 
    } 
} 

Siehe auch Angular 2 router.navigate

+0

Unhandled Promise Ablehnung: Bootstrap mindestens eine Komponente vor der Injektion Router. – jjlgjkkl

+0

Wie sieht Ihr AppModule aus? –

0

Etwas wie folgt aus:

if (this.user.userType === UserType.x1) { 
    this.router.navigate(['/edit']); } 
else if (this.user.userType === UserType.x2) { 
      this.router.navigate(['/view']); 
} 
0

nach dem Test: wenn in lazy Lademodus, diesen Code in ngModule writting kann eine Endlosschleife verursachen

constructor(private router:Router){ 
    console.log("MainModule 39"); 
    this.router.navigateByUrl("/tabs-demo/tab3"); 
} 

, wenn sie nicht faul Lastbetrieb, Schriftfelter dass Code in ngModule kann

Unhandled Promise rejection: Bootstrap at least one component before injecting Router 
verursachen

die Antwort lautet: writting dass navigati auf Code in der ersten Komponente.

testen in RC5

danke.

Verwandte Themen