Вопрос:

Тип 'Наблюдаемый <true | Promise <boolean >> 'нельзя назначить типу' boolean | UrlTree | Наблюдаемый <логический | UrlTree> | Обещание <логическое значение | UrlTree>»

angular typescript rxjs

4 просмотра

1 ответ

594 Репутация автора

У меня гвардия с canActivateметодом:

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
      return this.fireAuth.authState.pipe(
        take(1),
        map(authState => !!authState),
        map(auth => !auth ? this.router.navigate(['/']) : true)
      )
  }

Это работа, но у меня есть ошибка машинописи в консоли:

ОШИБКА в auth.guard.ts (20,7): ошибка TS2322: тип «Observable>» не может быть назначен типу «boolean | UrlTree | Наблюдаемый | Promise».

Как я могу это исправить?

Автор: Vladimir Humeniuk Источник Размещён: 11.08.2019 08:39

Ответы (1)


0 плюса

564381 Репутация автора

Не используйте map(). Вы не хотите изменять испускаемое значение. Вы просто хотите произвести побочный эффект.

tap(auth => {
  if (!auth) {
    this.router.navigate(['/']);
  }
});

Или, лучше, вернуть UrlTree вместо навигации самостоятельно, когда маршрутизатор должен перемещаться в другое место:

map(authState => !!authState || this.router.parseUrl('/'))
Автор: JB Nizet Размещён: 11.08.2019 08:42
Вопросы из категории :
32x32