我是打字稿的新手,我收到了这个错误
键入' Observable'不能分配到类型' IProduct []'。 财产包括'类型' Observable'
中缺少
我的服务类是:
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)
}
哪里错了,我应该怎么做才能修复它?
答案 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错误,这是因为这个原因。