2017-02-07 2 views
0

Мои коды такие, но не работают. Я хочу проверить информацию пользователя перед загрузкой маршрута.Угловой 2 маршрутизатор отправить данные с помощью распознавателя не работает

Я использую @ угловой/маршрутизатор: 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 
    } 
]; 

Secure Компонент:

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'];