Когда я вызываю login()
или logout()
в auth.service.ts из компонента login.ts после показа всплывающего окна facebook, isAuth
остается ложным на домашнем экране, но если я console.log(this.isAuth)
внутри subscribe()
он корректно обновляется в консоли.
Когда я звоню login()
или logout()
напрямую, не используя firebase facebook login, Работает отлично .
Home
HTML
<h1> {{isAuth}} </h1>
TS
isAuth = false;
constructor(private _auth:AuthService) {
_auth.authState.subscribe(state => this.isAuth = state)
}
AuthService
authState = new Subject<boolean>();
login(access_token) {
this.authState.next(true);
}
logout() {
this.authState.next(false);
}
Тема импортирована из
import {Subject} из "rxjs / Subject";
login.ts
signInWithFacebook() {
this.afAuth.auth
.signInWithPopup(new firebase.auth.FacebookAuthProvider())
.then((res: any) => {
const access_token = res.credential.accessToken;
this._auth.login(access_token);
this._router.navigateByUrl('/home');
});
обещание facebook решенои вызывается this._auth.login()
, а isAuth
изменяется, но представление не обновляется ...