2016-12-29 11 views
1

У меня есть служба, которая проверяет, имеет ли пользователь разрешения на открытие маршрута.Угловой 2 canActivate async

@Injectable() 
export class GuardService implements CanActivate{ 
    user: User; 
    constructor(private _userService: UserService) { 
} 

canActivate(): any{ 
    return this._userService.getUser().subscribe(user => { 
     if(user.user_type == 'admin'){ 
      return true; 
     } 
     return false; 
    }); 
} 

Но проблема в том, что она никогда не проходит. Проблема в этом наблюдаемом, но я не знаю, как с этим справиться. Как я могу это достичь? Заранее спасибо

ответ

4

возвращающие Observable вместо Subscription путем изменения subscribe к map

canActivate(): any{ 
    return this._userService.getUser().map(user => { 
     if(user.user_type == 'admin'){ 
      return true; 
     } 
     return false; 
    }); // <<== added 
} 
+0

Спасибо. Просто измените подписку на карту, потому что subscribe не имеют метода first(). Отредактируйте его, и я подтвержу ответ;) –

+0

Справа. Спасибо, пропустил этот. –

+0

'subscribe' не будет работать здесь вообще. Маршрутизатор должен иметь возможность подписываться. 'С' map' вам может не понадобиться 'first'. Я думаю, что это изменилось некоторое время назад (не уверен). –

Смежные вопросы