Angular - Наблюдаемое неверное логическое выражение возврата - PullRequest
0 голосов
/ 02 октября 2018

Я не знаю, слишком ли я сегодня кодирую, или я упускаю что-то очевидное, но у меня есть метод, который должен возвращать логическое наблюдаемое:

  public canCreateStory(): Observable<boolean> {
     return this.isAuthenticated().pipe(tap(result => {
        console.log(result && this.authInstance.currentUser.emailVerified); <== prints out false
        return result && this.authInstance.currentUser.emailVerified;}));
  }

Теперь, когда я подписываюсь на этометод, он печатает true:

  ngOnInit() {
     this.authService.canCreateStory().subscribe(result => console.log(result)) <== prints out true!?
  }

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 02 октября 2018

Чтобы изменить значение, излучаемое наблюдаемой, используйте map вместо tap:

public canCreateStory(): Observable<boolean> {
  return this.isAuthenticated().pipe(
    map(result => result && this.authInstance.currentUser.emailVerified)
  );
}

Из документации RxJS:

коснитесь

Выполните побочный эффект для каждого излучения в Наблюдаемом источнике, но верните Наблюдаемое, идентичное источнику.

map

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...