在AngularFireAuth signInWithPopup之后,角度变化检测不起作用

时间:2018-05-05 06:38:49

标签: angular firebase angularfire

我调用AngularFireAuth signInWithPopup,如下所示,并且成功,路由到另一个组件但是没有检测到更改。

在此处查找完整代码https://stackblitz.com/edit/cdissue

第一个屏幕有两个按钮 - '转到comp2,无需登录' &安培; '登录后转到comp2' 首先点击按钮'转到comp2,无需登录'转到第二个屏幕,其中两个按钮&那里有一个计数文本。

单击“增量”按钮将增加计数。这是工作正常的方案。

点击'返回'返回屏幕1然后点击按钮'登录后转到comp2'这将显示一个通过Gmail登录的弹出窗口。登录后,它将自动路由到第二个屏幕。 您可以使用凭证cdissue@gmail.com& @ngularTest使用gmail登录

现在没有显示计数或点击增量没有显示计数,这是错误情景

Observable.fromPromise(
      this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider())
    )
    .pipe(
      first(),
      map( authData => {
        this.router.navigate(['comp2'])
      })
    ).subscribe();

1 个答案:

答案 0 :(得分:1)

问题是您在登录后离开了角度区域。

解决方案是在角区域内运行代码:

constructor(
    ...
    private zone: NgZone
 ) { }
...
...
 .pipe(
    first(),
    map(authData => {
      this.zone.run(() => {
        this.goToComp2();
      });
    })
  ).subscribe();

<强> Forked Stackblitz