0

私のコードはそのようですが、機能しません。ルート読み込み前にユーザー情報を確認したい。

@angular/router: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');
    }
  }
}
4

1 に答える 1

0

私の問題を解決します。それは安全なコンポーネントにあります:

private route: ActivatedRouteコンストラクターに追加します

そして呼び込みますngOnInıt()

this.userRole = this.route.snapshot.data['userRole'];
于 2017-02-08T08:36:02.563 に答える