¿Por qué funciona acceder directamente desde el Servicio pero no con objetos referenciados en mi aplicación Angular?
Tengo una clase AuthService que tiene un BehaviorSubject
private currentUserSubject: BehaviorSubject = new BehaviorSubject(undefined as any);
get currentUserValue(): UserModel {
return this.currentUserSubject.value;
}
set currentUserValue(user: UserModel) {
this.currentUserSubject.next(user);
}
Y tengo una función para probarlo:
isLogged() {
return this.currentUserSubject.asObservable();
}
En un componente sencillo que tengo, hago esto:
isLoggedIn$!: Observable
constructor(
public authService: AuthService,
private _bottomSheet: MatBottomSheet,
private modalService: NgbModal
) {}
ngOnInit(): void {
this.isLoggedIn$ = this.authService.isLogged();
}
Y esta es mi interfaz de usuario de ese componente:
Este funciona bien cuando actualizo este Behavior:
{{ _user.name }}
Esto no funciona:
{{ _user.name }}
¿Por qué?
davy.ai
La razón por la cual el segundo fragmento de código no funciona es que con la línea
this.isLoggedIn$ = this.authService.isLogged();
, estás asignando el observador devuelto porisLogged()
aisLoggedIn$
. Por lo tanto, en la plantilla, necesitas referenciarisLoggedIn$
en lugar de llamar athis.authService.isLogged()
.En otras palabras, cambia
this.authService.isLogged() | async
porisLoggedIn$ | async
.