Возвращаемое значение из BehaviorSubject в angular 6 guard - PullRequest
0 голосов
/ 17 мая 2018

Я иду в этом направлении, потому что у меня есть еще один охранник, который проверяет пользователя на ранее сохраненном токене. Это то, что я делал в предыдущей версии rxjs, теперь в последней, которую вы не можете отобразить на эту тему.

canActivate(next: ActivatedRouteSnapshot,
           state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  return this.authservice.behaviorsubject().map(x => {
    if (x) {
      return true;
    } else {
      return false;
    }
  })
}

Мне нужен какой-нибудь совет, как заставить эту штуку работать. Я пробовал что-то вроде этого, но ничего не верну, так как никогда не подписывался на него (а также это не Observable, это AnonymusSubject, когда я его консоль.log)

canActivate(next: ActivatedRouteSnapshot,
           state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
  return this.authservice.behaviorsubject().pipe(
    map(x => {
      if (x) {
        return true;
      } else {
        return false;
      }
    })
  )
}

Также пытался преобразовать его в наблюдаемый с помощью Observable.create (), но работать не будет. Я знаю, что я что-то упустил. Heeeeelp:)

1 Ответ

0 голосов
/ 17 мая 2018

возвращает ваше поведениеSubject как наблюдаемое в вашей службе авторизации:

private _authed: BehaviorSubject<boolean> = new BehaviorSubject(null);

behaviorsubject():Observable<boolean> {
   return this._authed.asObservable()
}

Также небольшой комментарий: CanActivate работает с observables, поэтому, если ваша функция поведенческого объекта возвращает Observable с типом boolean, вам не нужно отображать его

...