То, что вы делаете сейчас, преобразует user
в boolean
. Так что в следующем tap
вы в конечном итоге получите boolean
.
Почему бы вам не использовать user
непосредственно в tap
и избавиться от этого map
?
Если определено user
, if(!user)
все равно разрешится до false
.
А если user
равно undefined
или null
, то if(!user)
разрешится до true
.
И да, как вы сказали, так как вам нужно вернуть Observable<boolean>
, вам придется map
его до boolean
Так что вы можете использовать это:
return this.auth.user$.pipe(
take(1),
tap(user => {
if (!user) {
// Calculate route based on user value
}
}),
map(user => user ? false : true)
);