Javascript 如何使用Firebase';s onAuthStateChanged以跟踪用户登录状态?

Javascript 如何使用Firebase';s onAuthStateChanged以跟踪用户登录状态?,javascript,angular,firebase,firebase-authentication,Javascript,Angular,Firebase,Firebase Authentication,我已经用Firebase设置了一个用户登录流,现在正试图在用户未登录时保护页面不被访问。从中,我知道我可以使用onAuthStateChanged跟踪用户登录状态,但我不确定该函数中包含哪些内容,以允许我识别用户是否从route guard登录。如何使用onAuthStateChanged跟踪登录状态 编辑: 更具体地说,我不确定在调用onAuthStateChanged时如何引导路由器。我试着打电话给一个路由器 @组件({ 选择器:'应用程序根', templateUrl:'app.compo

我已经用Firebase设置了一个用户登录流,现在正试图在用户未登录时保护页面不被访问。从中,我知道我可以使用
onAuthStateChanged
跟踪用户登录状态,但我不确定该函数中包含哪些内容,以允许我识别用户是否从route guard登录。如何使用
onAuthStateChanged
跟踪登录状态

编辑:

更具体地说,我不确定在调用
onAuthStateChanged
时如何引导路由器。我试着打电话给一个路由器

@组件({
选择器:'应用程序根',
templateUrl:'app.component.html'
})
导出类AppComponent{
建造师(
私人afAuth:AngularFireAuth,
专用路由器:路由器,
) {
this.afAuth.auth.onAuthStateChanged(函数(用户){
如果(用户){
这个.router.navigate('home');
}否则{
this.router.navigate('login');
} 
});
}
}

但是当调用
onAuthStateChanged
时,我得到一个错误,指出
this.router
未定义。

我意识到问题是匿名函数的作用域问题。使用
=>
语法可以修复此问题

@组件({
选择器:'应用程序根',
templateUrl:'app.component.html'
})
导出类AppComponent{
建造师(
私人afAuth:AngularFireAuth,
专用路由器:路由器,
) {
this.afAuth.auth.onAuthStateChanged((用户)=>{
如果(用户){
这个.router.navigate('home');
}否则{
this.router.navigate('login');
} 
});
}
}

API文档:您的问题应该更像是“无法访问嵌套函数内部的全局变量(即函数内部的函数)”,解决方案是在函数内部使用箭头函数。