Я пытаюсь получить значения BehaviorSubject. Значения возвращаются, но как их использовать, чтобы использовать их в выражении true / false.
BehaviorSubject {_isScalar: false, observers: Array(0), closed: false, isStopped: false, hasError: false, …}
closed:false
hasError:false
isStopped:false
observers:[Subscriber]
thrownError:null
value:(...)
_isScalar:false
_value:Array(3)
0:"name@gmail.com"
1:"Bob Smith"
2:{adminUser: false, basicUser: true} length:3
__proto__:Array(0)
__proto__:Subject
Моему субъекту поведения отправляется следующее. Почему я получаю ноль в начале.
user: BehaviorSubject<User> = new BehaviorSubject<User>(null);
// Роли поведения пользователя.
this.afAuth.authState
.switchMap(auth => {
if (auth) {
/// signed in
const authData = this.db.list<User>('users/' + auth.uid).valueChanges();
console.log(authData);
return this.db.list<User>('users/' + auth.uid).valueChanges();
} else {
/// not signed in
return Observable.of(null);
}
})
// .subscribe(console.log); // check the subscription
.subscribe((userData) => {
console.log(userData);
this.user.next(userData);
// this.user.next(user);
// console.log(this.user.next(userData));
});
}
Результаты, с которыми у меня возникли проблемы:
Check Value false authguard.service.ts:39
Route was False authguard.service.ts:26
Check Value true
Я запускаю console.log, и значение сначала отображается как null, поэтому имеет ложный ответ. Затем он снова запускается и становится правдой. Все это происходит после запуска страницы изначально. Мне нужно, чтобы мои значения проверки были истинны при загрузке.