2017-02-07 3 views
0

Meine Codes wie das funktioniert aber nicht. Ich möchte die Benutzerinformationen vor dem Laden der Route überprüfen.Angular 2 Router senden Daten mit Resolver funktionieren nicht

I @ Winkel/Router verwenden: 3.4.2

Resolver Klasse:

@Injectable() 
export class UserRoleResolver implements Resolve<any> { 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any { 
    let user:any = {}; 
    user.role = 'MEMBER'; 
    return user; 
    } 
} 

Router:

export const APP_ROUTES: Routes = [ 
    {path: '', component: PublicComponent, children: PUBLIC_ROUTES}, 
    { 
    path: '', 
    component: SecureComponent, 
    resolve: {userRole: UserRoleResolver}, 
    canActivate: [AuthGuard], 
    children: SECURE_ROUTES 
    } 
]; 

Sichere Komponente:

export class SecureComponent implements OnInit { 
    userRole:any; 
    role:string = 'MEMBER'; 
    constructor(private userService: UserService,private router:Router) { 
    } 

    ngOnInit() { 

    this.role = 'MEMBER'; 
    console.log('Role',this.userRole); 

    if (!this.userService.isLoggedIn()) { 
     this.router.navigateByUrl('/login'); 
    } 
    } 
} 

Antwort

0

löse ich meine Problem. Es ist in sicheren Komponente:

I private route: ActivatedRoute in Konstruktor hinzufügen

Und nennen Sie in ngOnInıt()

this.userRole = this.route.snapshot.data['userRole'];