В моей службе аутентификации у меня есть наблюдаемая user
, которая заполняется из бэкэнда firebase.
У меня также есть метод, который принимает объект пользователя и возвращает логическое значение, если у пользователя есть роль, которая являетсяпередано.
В моем шаблоне есть некоторые элементы, которые я хочу показывать, только когда вошедший в систему пользователь имеет роль admin
, например, указанную в качестве одной из его ролей.Мне нужно, чтобы он функционировал так, чтобы я мог в конечном итоге использовать is ('contributor') и т. Д., И все равно получить логическое значение.
Прямо сейчас, когда я пытаюсь его протестировать, браузер зависает и в конечном итоге вылетает,Как настроить все так, чтобы div скрывался до разрешения данных, если и когда роль пользователя соответствует требованию?
// authService
this.user = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges()
} else {
return of(null)
}
})
)
is(role){
let p = Promise
this.user.toPromise().then(resolvedUserData=>{
(_.has(role, resolvedUserData.roles)) ? p.resolve() : p.reject();
})
return p;
}
//template
<div *ngIf="authService.is('admin') | async">admin content here</div>