Я хочу, чтобы некоторые элементы сети появлялись или исчезали, если назначена переменная или нет.Я подписываюсь на службу для получения этой переменной, но элементы с * ngIf не обновляются при изменении переменной.
Служба в users.service:
public getMyProfile(): Observable<Profile> {
return Observable.create(observer => {
this.getProfile().subscribe(
profile => {
this.avatarService.getAvatar(profile.avatarId).subscribe(
avatar => {
profile.avatar = avatar;
observer.next(profile);
observer.complete();
}, error => observer.error(error));
}, error => observer.error(error));
});
}
компонентимеет подписку для получения переменной профиля:
export class NavBarComponent implements OnInit {
public profile: Profile;
private subscription: Subscription;
constructor(
public alertService: AlertService,
public utilsService: UtilsService,
public userService: UserService
) {
this.utilsService.currentUser = Login.toObject(localStorage.getItem(AppConfig.LS_USER));
this.utilsService.role = Number(localStorage.getItem(AppConfig.LS_ROLE));
}
ngOnInit(): void {
this.userService.getMyProfile().subscribe(
((profile: Profile) => {
this.profile = profile; // this is the subscription where I get the profile variable
}),
((error: Response) => {
this.alertService.show(error.toString());
}));
}
}
И в шаблоне у меня есть * ngIf, чтобы показать или скрыть элементы, если есть профиль или нет:
<a *ngIf="profile" mat-button routerLink="/home">{{ 'HOME.TITLE' | translate }}</a>
Я искал и пробовал разные вещи, но элементы всегда видны или всегда невидимы.Они не меняются при изменении переменной профиля.Но если переменный профиль меняется и я перезагружаюсь, то он меняется по желанию.