首页 > 解决方案 > Angularfire 依赖注入 - TS2339 属性 firestore 在 Cartservice 类型上不存在

问题描述

我正在将 angularefire 添加到 angular.io“看一看教程”(购物车)。尝试使用 firebase firestore 替换 products.ts 和 shipping.json,并编写一个 forders 文件替换“您的订单已提交”。得到它的工作有点但是....

在购物车.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
//angularfire
import { AngularFirestore} from '@angular/fire/firestore';
import { Observable } from 'rxjs';

@Injectable()
export class CartService {

  items = [];
//angularfire
  fshipping: Observable<any[]>;
  afs: AngularFirestore;

  constructor(
    private http: HttpClient,
//angularfire
    firestore: AngularFirestore
  ) { 
    this.fshipping = firestore.collection('fshipping').valueChanges();
    this.afs = firestore;
  }

  addToCart(product) {
    this.items.push(product);
  }
  getItems() {
    return this.items;
  }

  clearCart() {
    this.items = [];
    return this.items;
  }

  getShippingPrices() {
//angularfire
    // return this.http.get('/assets/shipping.json');
    return this.fshipping;
  }

//angularfire
  placeOrder(customerData) {
    const orderColl = this.afs.collection<any>('forders');
//    const orderColl = this.firestore.collection<any>('forders');
    orderColl.add({
      name: customerData.name, 
      address: customerData.address
    });
  }

}

fshipping(内部构造函数)有效并替换了 shipping.json。但是在 placeOrder 方法中,我必须使用 this.afs.collection('forders')... 如果我使用 this.firestorre.collection .... 出现以下错误

src/app/cart.service.ts:45:28 中的错误 - 错误 TS2339:“CartService”类型上不存在属性“firestore”。

第 45 行:

const orderColl = this.firestore.collection<any>('forders');

在研究其他在线教程时,他们可以在其他方法中使用通过构造函数注入的 firestore。我错过了什么?谢谢你。

标签: angulartypescriptfirebasegoogle-cloud-firestoreangularfire

解决方案


该错误告诉您您的对象中没有调用属性firestore。也许您打算使用该afs属性:

const orderColl = this.afs.collection<any>('forders');

推荐阅读