2017-02-07 9 views
0

私のコードはそうですが動作しません。私はルートロードの前にユーザー情報をチェックしたい。角度2のルータがデータを送信するリゾルバで動作しません。

Iは角/ルータ@使用

:3.4.2

リゾルバクラス:

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

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

ルータ:

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

セキュアコンポーネント:

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'); 
    } 
    } 
} 

答えて

0

私は自分を解決します問題。これは、安全なコンポーネントである:私は、コンストラクタ

private route: ActivatedRouteを追加し、呼び出し

ngOnInıt()

this.userRole = this.route.snapshot.data['userRole']; 
関連する問題