我正在尝试创建一个返回我的组件可以订阅的Observable的服务。但是我收到以下错误:
Property 'subscribe' does not exist on type 'Observable'.
我目前正在运行build alpha.44,下面你会发现一些可以重现问题的代码。
import {Http} from 'angular2/http';
import {Observable} from 'angular2/core';
export class Backend {
http: Http;
constructor(http: Http) {
this.http = http;
this.getTeams().subscribe();
}
public getTeams(): Observable {
return this.http.get('/api/teams')
.map(JSON.parse);
}
}
更改代码以返回“任何”类型似乎有效,但这消除了使用TypeScript的一些优点。有没有什么好方法可以在Angular2的当前版本中使用Observables的严格类型?
答案 0 :(得分:7)
http.get
从[{3}}返回的是Observable
,而非{2} rxjs
。作为临时解决方案,您可以从“@activex / rxjs / dist / cjs / Observable”导入rxjs Observable
(参见Observable
)。
import Observable from '@reactivex/rxjs/dist/cjs/Observable';
class Backend {
// ...
getTeams() : Observable {
return this.http.get('api/teams.json')
.map(res => res.json());
}
}
但恕我直言更改代码以返回“any”是目前最好的解决方案。他们现在这样做this plunker。
答案 1 :(得分:0)
使用它来消除这种返回可观察
的方法的错误yourMethod(...arguments): Observable<any> {}