Angularfire v6不允许我使用AngularFireStore

问题描述 投票:0回答:1

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

在这种情况下,我在加载AngularFirestore afs时遇到问题。

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 { }

javascript angular firebase google-cloud-firestore angularfire
1个回答
0
投票

尝试替换

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

with

.then(() => this.onLoginFulfiled(), () => this.onLoginRejected());
© www.soinside.com 2019 - 2024. All rights reserved.