代码之家  ›  专栏  ›  技术社区  ›  Kobe Forrosuelo

在angular6中添加内嵌类型时出错

  •  2
  • Kobe Forrosuelo  · 技术社区  · 7 年前

    我在尝试添加product.ts接口以便在product filter方法中启用intellisense时出现此错误。

    我是遵循这个特定的角度+firebase教程,我固执地认为教程的firebase和angularfer2版本低于我的版本。

    任何帮助都很好:)

    错误

    enter image description here

    管理产品.component.ts

    import { Component, OnInit, OnDestroy } from '@angular/core';
    import { ProductService } from '../../product.service';
    import { Subscription } from '../../../../node_modules/rxjs';
    import { Product } from '../../models/product';
    
    @Component({
      selector: 'app-admin-products',
      templateUrl: './admin-products.component.html',
      styleUrls: ['./admin-products.component.css']
    })
    export class AdminProductsComponent implements OnInit, OnDestroy {
      products: Product[];
      filteredProducts: any[];
      subscription: Subscription;
    
      constructor(private productService: ProductService) {
        this.subscription = this.productService.getAll()
          .subscribe(products => this.filteredProducts = this.products = products);
      }
    
      filter(query: string) {
        this.filteredProducts = (query) ?
          this.products.filter(p => p.title.toLowerCase().includes(query.toLowerCase())) : 
          this.products;
      }
    
      ngOnDestroy() {
        this.subscription.unsubscribe();
      }
    
      ngOnInit() {
      }
    
    }
    

    型号/产品.ts

    export interface Product {
        key: string;
        title: string;
        price: number;
        category: string;
        imageUrl: string;
    }
    

    产品.服务.ts

    import { Injectable } from '@angular/core';
    import { AngularFireDatabase } from 'angularfire2/database';
    import { map, take } 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('/products').snapshotChanges()
          .pipe(
            map( products => {
              return products.map( p => ({
                key: p.payload.key, ...p.payload.val()
              }))
            })
          );
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Malindu Sandaruwan    7 年前

    获取 方法返回类型的值。 {key:string}[]

    你把它分配给 this.filteredproducts产品 本产品 不同类型的 产品 是的。

    因此,您必须根据您的业务需求执行以下操作之一。

    1. 生成除 钥匙 可选输入 产品 接口。
    2. 返回值 产品 从中键入 获取 方法。