声明类型既不是“ void”也不是“ any”的函数必须返回一个值。角度数据表

时间:2019-05-19 03:28:04

标签: angular typescript

我有以下DataTable DataSource代码无法编译。我收到以下编译错误。

  

其声明类型既不是'void'也不是'any'的函数必须返回   一个值。

  connect(): Observable<Product[]> {
    this.productsService.getProducts();
    this.productsService
      .getProductUpdateListener()
      .subscribe((products: Product[]) => {
        this.products = products;
      });
  }

我的服务类具有以下代码。

  getProducts() {
    this.http
      .get<{ message: string; products: Product[] }>(
        'http://localhost:3000/api/products'
      )
      .subscribe(productData => {
        this.products = productData.products;
        this.productsUpdated.next([...this.products]);
      });
  }

  getProductUpdateListener() {
    return this.productsUpdated.asObservable();
  }

2 个答案:

答案 0 :(得分:0)

您需要将 return 添加到方法 connect 中,或者如果您不想从中返回任何内容,则只需添加一个关键字void方法

connect(): Observable<Product[]> {
  return  this.productsService.getProducts();
  return   this.productsService.getProductUpdateListener()

答案 1 :(得分:0)

这就是我修复它的方式。我删除了connect()函数并将其移至ngOnit。并做了一些修改。

  ngOnInit() {
    this.productsService.getProducts();
    this.productsService
      .getProductUpdateListener()
      .subscribe((products: Product[]) => {
        this.products = products;
        this.dataSource = new MatTableDataSource(this.products);
      });
  }