在我的所有服务中,我有2个方法,handleErrors和ExtractData,这违反了DRY原则。
这两种方法:
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleErrors(error: any): Observable<any> {
return Observable.throw(error.json(););
}
我想让这些方法公开并将它们移动到一个服务,然后我将注入我的所有服务,因此来自:
getFoo(): Observable<IFoo[]> {
return this._http.get(FooApi)
.map(this.extractData)
.catch(this.handleErrors);
}
太:
getFoo(): Observable<IFoo[]> {
return this._http.get(FooApi)
.map(this._helperService.extractData) //<--
.catch(this._helperService.handleErrors); //<--
}
我在.map(this._helperService.extractData)
收到的错误是:
类型的参数'(res:Response)=&gt; {}'不可分配给 参数类型'(值:响应,索引:数字)=&gt; {}”。种类 参数'res'和'value'不兼容。 “响应”类型不能分配给“响应”类型。存在两种具有此名称的不同类型,但它们是不相关的。 “响应”类型中缺少属性“body”。
我尝试添加括号(),但后来收到:
预期1个参数,但得到0。
当方法属于同一类时,为什么它可以工作? 当方法在另一个类中时,我怎样才能使它工作,或者我需要采取不同的方法?
答案 0 :(得分:1)
将import { Response } from '@angular/http';
添加到您的帮助程序服务。
目前,帮助程序服务使用lib.dom.d.ts Response
接口。