Наблюдаемый не освежающий вид - Угловой 2+ - PullRequest
0 голосов
/ 03 декабря 2018

Когда я вызываю 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 изменяется, но представление не обновляется ...

1 Ответ

0 голосов
/ 03 декабря 2018

Возможно, вы можете попробовать NgZone

ts

isAuth = false;

constructor(private _auth:AuthService, private ngZone: NgZone) {
ngZone.run(() => {
   _auth.authState.subscribe(state => this.isAuth = state)
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...