我想在连接到Firebase
之后才从我的主要组件中获取数据this.AngularFireModule.initializeApp(environment.firebase)
这是在我的app.module中。我想在Firebase初始化后从db获取数据。 问题是我尝试从db获取我的用户数据,但我第一次尝试时出错,因为我的应用程序没有连接到firebase。当我刷新页面时没有问题因为已经连接了。
这是我的app.module.ts
@NgModule({
declarations: [
AppComponent,
HomeComponent,
CategorieComponent,
SignComponent,
TopicComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot(appRoutes),
AngularFireModule.initializeApp(environment.firebase),
AngularFireDatabaseModule, // imports firebase/database, only needed
for database features
AngularFireAuthModule // imports firebase/auth, only needed for auth
features
],
providers: [SharedService, UsersService],
bootstrap: [AppComponent]
})
export class AppModule { }
答案 0 :(得分:1)
- 编辑 -
它不是Firebase问题,而是一个时间问题。启动应用后,Firebase必须从localstorage读取和解密用户令牌。在此之前,currentUser未定义,如果您尝试访问电子邮件或uid等属性,则会出现错误。
我建议您使用Observables来跟踪更改。否则,您将在登录和注销时收到相同的问题。这可能如下所示:
<强> userService.ts 强>
val authInfo = passwordHasherRegistry.current.hash(data.password)
<强> component.ts 强>
...
public authInfo = new BehaviorSubject<UserInfo>(undefined);
authInfo$ = this.authInfo.asObservable();
constructor(private fbAuth: AngularFireAuth) {
this.fbAuth.auth.onAuthStateChanged(authInfo => this.authInfo.next(authInfo));
}
...
<强> component.html 强>
...
authInfo$: Observable<UserInfo>;
constructor(private userService: UserService) {
this.authInfo$ = this.authService.authInfo$;
}
...
async-pipe管理observable的订阅,elvis-operator(?)检查null和undefined。