【发布时间】:2023-03-20 02:23:01
【问题描述】:
我在组件类型{ data: Product[]; id: string; }[]' is not assignable to type 'Product[] 中遇到了这个问题。
类型 { data: Product[]; id: string; } 缺少类型 'Product': title, price, category, imageUrl 的以下属性。当我试图将从数据库返回的值分配给
this.filterdProduct = this.Product = products;
在构造函数中...
这是我的代码:接口
export interface Product{
title:string;
price:number;
category:string;
imageUrl:string;
}
Service.Ts:
import { Product } from './../../new-products';
import { Observable } from 'rxjs';
import { AngularFireDatabase } from '@angular/fire/database';
import { Injectable } from '@angular/core';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ProductService {
constructor(private db: AngularFireDatabase){}
create(product){
return this.db.list('/products').push(product);
}
getAll() {
return this.db.list<Product[]>('/products').snapshotChanges()
.pipe(
map(a =>
a.map(
ac => {
const data= ac.payload.val();
const id = ac.key;
// console.log(data);
// console.log(id)
return {data,id}
} )
)
);
}
Component.ts:
import { Product } from './../../new-products';
import { ProductService } from './../Services/product.service';
import { AngularFireDatabase } from '@angular/fire/database';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-admin-products',
templateUrl: './admin-products.component.html',
styleUrls: ['./admin-products.component.css']
})
export class AdminProductsComponent implements OnInit, OnDestroy {
Product:Product []= [];
filterdProduct:any = [];
subscription: Subscription;
constructor(private pd:ProductService){
this.subscription = this.pd.getAll().subscribe(products => {
this.filterdProduct = this.Product = products;
})
}
filter(query:string){
this.filterdProduct = (query) ?
this.Product.filter(p => p.title.toLowerCase().includes(query.toLowerCase())) : this.Product;
console.log(query)
}
ngOnInit(){
}
ngOnDestroy(){
this.subscription.unsubscribe();
}
}
【问题讨论】:
-
this.product 在构造函数中显示错误...
-
@sandeepkumarBrungi 尝试在控制台中打印 this.Product。
-
请发布完整的错误,以便我们更好地理解它
-
@Yeheshuah:谢谢你的建议。因为我是这个世界的新手..:)
标签: javascript angular database firebase