Angularfire v6未定义Promise中的AngularFireStore



我的登录组件成功登录了用户,但我想在FireStore中为该用户创建一个文档。

在这种情况下,我在加载AngularFirestoreafs时一直遇到问题。

zone-evergreen.js:659 Unhandled Promise rejection: Cannot read property 'afs' of undefined ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read property 'afs' of undefined
at onLoginFulfiled (login.component.ts:32)
at ZoneDelegate.invoke (zone-evergreen.js:365)
at Zone.run (zone-evergreen.js:124)
at zone-evergreen.js:851
at ZoneDelegate.invokeTask (zone-evergreen.js:400)

这是我的登录组件代码。

import { Component, OnInit } from '@angular/core';
import { LoginRequest } from './loginRequest';
import { AngularFireAuth } from '@angular/fire/auth';
import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';
import { auth } from 'firebase/app';
import 'firebase/firestore';
export interface Item { uid: string; }
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
loginRequest: LoginRequest = { password: '', login: ''};
constructor(public fireAuth: AngularFireAuth, public afs: AngularFirestore) { }
ngOnInit(): void {
}
login(): void {
console.log(this.loginRequest);
this.fireAuth.signInWithEmailAndPassword(this.loginRequest.login, this.loginRequest.password)
.then(this.onLoginFulfiled, this.onLoginRejected);
}
onLoginFulfiled(credential: auth.UserCredential): void {
console.log('Fulfilled: ' + credential);
const uid = credential.user.uid;
const userDocument = this.afs.doc<Item>(`system-users/${uid}`);
userDocument.update({uid});
}
onLoginRejected(reason: any): void {
console.log('Rejected: ' + reason);
}
}

还有我的app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
import { AngularFireModule } from '@angular/fire';
import { AngularFireAnalyticsModule } from '@angular/fire/analytics';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { environment } from '../environments/environment';
import { LoginComponent } from './login/login.component';
@NgModule({
declarations: [
AppComponent,
PageNotFoundComponent,
LoginComponent
],
imports: [
BrowserModule,
FormsModule,
AngularFireModule.initializeApp(environment.firebase),
AngularFireAnalyticsModule,
AngularFirestoreModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

尝试更换

.then(this.onLoginFulfiled, this.onLoginRejected);

带有

.then(() => this.onLoginFulfiled(), () => this.onLoginRejected());

最新更新