财产包括&#39;类型&#39; Observable <iproduct []>&#39;

时间:2017-08-28 08:35:38

标签: angular

我是打字稿的新手,我收到了这个错误

  

键入&#39; Observable&#39;不能分配到类型&#39; IProduct []&#39;。     财产包括&#39;类型&#39; Observable&#39;

中缺少

我的服务类是:

getProducts() : Observable<IProduct[]> {
    return this._http.get<IProduct[]>(this._productUrl)
    .do(data=>console.log('All: ' + JSON.stringify(data)))
    .catch(this.handleError);
}


private handleError(err : HttpErrorResponse){
    console.log(err.message);
    return Observable.throw(err.message)
}

哪里错了,我应该怎么做才能修复它?

3 个答案:

答案 0 :(得分:16)

如果这个问题来自@DeborahKurata的Pluralsight的Angular课程,那么答案就在下一个模块中,&#34;订阅一个Observable&#34;。

在product-list.component.ts中的ngOnInit(): void方法中,更改此设置

    this.products = this._productService.getProducts();
    this.filteredProducts = this.products;

    this._productService.getProducts()
        .subscribe(products => { 
            this.products = products; 
            this.filteredProducts = this.products; 
        }, error => this.errorMessage = <any>error);

答案 1 :(得分:0)

看起来像http.get<IProduct[]>(this._productUrl)返回IProduct的数组,并且您的代码尝试将其作为可观察的 IProduct数组返回。要从getProducts函数(使用RxJS)返回可观察的数组,可以执行以下操作:

import { Observable } from 'rxjs';

return observable.of(this._http.get<IProduct[]>(this._productUrl));

答案 2 :(得分:0)

如果您还来自多元化-角度组件通信。

对K0D4答案进行更改后。

在product.service.ts上,将ErrorObservable替换为throwError:

import { Observable, throwError } from 'rxjs/';

然后在底部,handleError不返回ErrorObservable,可以使用throwError:

private handleError(err: HttpErrorResponse) {
    ....
    return throwError(errorMessage);
}

在更新到Angular 7之后,我开始出现Observer错误,这是因为这个原因。