Как подписаться на обновление хеадера при авторизации? В инете миллион вопросов по этому поводу, но слишком частные случаи и ответы для моего понимания. Я слабоват.
Есть
user.serviceimport { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable()
export class UserService {
constructor(private http: HttpClient) { }
getUser() {
return this.http.get('/server/api/userService');
}
public isAuthenticated(): Observable<boolean> {
return this.getUser().pipe(
map(data => !!data['login'])
);
}
}
И
header.componentimport { Component, OnInit } from '@angular/core';
import { UserService } from '../../shared/user.service';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css'],
providers: [UserService]
})
export class HeaderComponent implements OnInit {
user: any;
auth: boolean = false;
isAuthenticated: boolean;
constructor(private userService: UserService) { }
ngOnInit() {
this.userService.getUser().subscribe(data => {
this.user = data;
if(this.user.login !== false) {this.auth = true;}
});
this.userService.isAuthenticated().subscribe( value => {
this.isAuthenticated = value;
});
}
}
Дело в том, что шаблон хеадера никак не реагирует, пока не перезагрузить приложение целиком, нужна какая-то подписка на изменение данных, но я в этом ничего не понимаю