Я реализую NbRoleProvider
в моем Angular
приложении с Nebular
.
Я реализовал его следующим образом:
@Injectable()
export class RoleProvider implements NbRoleProvider {
constructor(private store: Store<IAppStore>) {
}
getRole(): Observable<string[]> {
const loggedUser = this.store.select<IUser>(x => x.loggedUserStore.loggedUser);
let result = [];
loggedUser.subscribe(data => {
if (data != null) {
result = data.roles; // returns ['admin']
}
});
return of(result);
// this works!!
// return of(['admin']);
}
}
Если я верну фиксированныйРоль массива вроде ['admin']
все работает как положено.Если я попытаюсь подписать значение из магазина, оно не будет работать.Отладка Я вижу, что метод getRole
вызывается несколько раз, когда объект data
по-прежнему null
, а затем несколько раз, когда он загружен с соответствующим списком массивов.
Кажется, что *nbIsGranted
Директива отображается в первый момент, когда подписка все еще ждет данных из хранилища.
Что мне не хватает?