Привет, я создаю угловое приложение с @ angular / fire.В сервисе auth у меня есть наблюдаемый пользователь, который получает значение текущего пользователя, если пользователь аутентифицирован, и значение NULL, если пользователь не аутентифицирован.
export class AuthService {
user$: Observable<User>;
constructor(private afAuth: AngularFireAuth, private afs:
AngularFirestore) {
this.user$ = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
} else {
return of(null);
}
})
)
}
Это в конструкторе сервисатак что все компоненты, которые внедряют службу, могут видеть пользователя $ variable.Now, скажем, у меня есть навигация, которая показывает различные кнопки в зависимости от того, аутентифицирован ли пользователь или нет.
<ul>
<!-- user IS NOT logged in -->
<li *ngIf="!(authService.user$ | async)">
This is visible if user is NOT logged in
</li>
<!-- user IS logged in -->
<li *ngIf="authService.user$ | async" fxHide.xs>
This is visible if user IS logged in
</li>
</ul>
Пользователь $ observable пуств начале и требуется некоторое время , чтобы принять значение, что означает, что даже если пользователь вошел в систему, в шаблоне «Это видно, если пользователь НЕ вошел в систему» будет отображаться за пару секунд доobservable принимает значение текущего пользователя и затем переключается на другой тег li.Есть ли лучший способ проверить аутентифицированного пользователя, чтобы предотвратить это?Обратите внимание, я не могу использовать защиту маршрута, потому что я не хочу блокировать целую страницу, а только некоторую условную логику между кнопками и некоторыми другими элементами.Это дублирующий вопрос к этому: Angular 6 AngularFireAuth проверяет, вошел ли пользователь в систему до отображения страницы , где я не нашел ответа.Заранее спасибо