Здравствуйте, это мой весенний загрузочный код для получения информации о пользователе.
@GetMapping("/getUserInfo")
public User getUserInfo(@RequestHeader(value="token") String token) {
User user = userRepository.findByEmail(jwtUtil.extractUsername(token));
return user;
}
Это код для получения его в angular
public getUserInfo(token): Observable<User>{
const headers = new HttpHeaders().set('token', token);
return this.http.get<User>('http://localhost:8081/getUserInfo', {headers, responseType: 'json'});
}
Это мой компонент навигации
user: User;
constructor(public jwtClientService: JwtClientService,private zone:NgZone) {
}
ngOnInit(): void {
this.ress();
}
ress(){
this.jwtClientService.getUserInfo(sessionStorage.getItem('token'))
.subscribe(recent => {
this.user=recent;
});
}
и просмотр
<li *ngIf="jwtClientService.isUserLoggedIn()===true && user?.roles.includes('ADMIN')" class="nav-item" routerLinkActive="active">
<a [routerLink]="['admin/users']" class="nav-link" routerLink="/admin/users" >Users</a>
</li>
но как только я пытаюсь использовать подписку, обещание, канал, все это работает только со второй попытки, я знаю, что это является причиной асин c, но я некоторые ссылки должны отображаться в nav только для пользователей-администраторов, таких как эта в навигации (они не отображаются после подписки, а только после обновления страницы)
Возможно ли это?