首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Angular6中添加内联类型时出错

在Angular6中添加内联类型时出错
EN

Stack Overflow用户
提问于 2018-07-18 04:02:13
回答 1查看 451关注 0票数 2

当我试图添加product.ts接口以便在product.ts方法中启用IntelliSense时,我得到了这个错误。

我遵循这个特定的angular+firebase教程,我固执地认为教程的防火墙和angularfire2版本比我的版本要低。

任何帮助都是很好的:)

错误

admin-products.component.ts

代码语言:javascript
复制
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() {
  }

}

型号/产品

代码语言:javascript
复制
export interface Product {
    key: string;
    title: string;
    price: number;
    category: string;
    imageUrl: string;
}

product.service.ts

代码语言:javascript
复制
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()
          }))
        })
      );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-18 04:31:34

getAll方法中,返回{key: string}[]类型的值

您将它分配给this.filteredProductsthis.products,它们是不同类型的Product

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

  1. 使key以外的字段在产品接口中可选。
  2. getAll方法返回Product类型的值。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51393394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档