我调用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();
答案 0 :(得分:1)
问题是您在登录后离开了角度区域。
解决方案是在角区域内运行代码:
constructor(
...
private zone: NgZone
) { }
...
...
.pipe(
first(),
map(authData => {
this.zone.run(() => {
this.goToComp2();
});
})
).subscribe();
<强> Forked Stackblitz 强>