Я новичок в Angular. Я смотрю учебник Моша Хамедани с использованием Angular версии 6, но проблема в том, что учебная версия 4. Я работаю над проектом электронной коммерции для кнопки AddToCart, где продукт должен увеличить свое количество, нажав кнопку и обновив в Firebase с использованием productId, а также, если я пытаюсь добавить новый продукт, то идентификатор этого нового продукта должен быть добавлен в базу данных AngularFire.
Все работает отлично, теперь я получаю сообщение об ошибке в файле shopping-cart.service.ts. Ошибка находится в последней строке async addToCart (product: Product) , где ошибка показывает, что конвейер свойств не существует для типа AngularFireObject.
Вот код.
торговые-cart.service.ts
import { Injectable } from '@angular/core';
import { AngularFireDatabase } from '@angular/fire/database';
import { Product } from '../models/products';
import { take } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ShoppingCartService {
constructor(private db: AngularFireDatabase) { }
private create(){
return this.db.list('/shopping-carts').push({
dateCreated: new Date().getTime()
})
}
private getCart(cartId: String){
return this.db.object('/shopping-carts/' + cartId);
}
private getItem(cartId: string, productId: string){
return this.db.object('/shopping-carts/' + cartId + '/items/' + productId);
}
private async getOrCreateCartId(){
let cartId = localStorage.getItem('cartId');
if(cartId) return cartId;
let result = await this.create();
localStorage.setItem('cartId', result.key);
return result.key;
}
async addToCart(product: Product){
let cartId = await this.getOrCreateCartId();
let item$ = this.getItem(cartId, product.key);
item$.pipe(take(1)).subscribe(item => {
item$.update({ product: product, quantity:(item.quantity || 0) + 1 });
});
}
}