我正在尝试创建一个服务,返回我的组件可以订阅的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的严格类型?
从http.get返回的是从
rxjs
开始的
Observable
,而不是angular2
Observable
.作为临时解决方案,您可以从“@activex / rxjs / dist / cjs / Observable”导入rxjs Observable(参见
this plunker).
- import Observable from '@reactivex/rxjs/dist/cjs/Observable';
- class Backend {
- // ...
- getTeams() : Observable {
- return this.http.get('api/teams.json')
- .map(res => res.json());
- }
- }
但恕我直言改变代码返回“任何”是目前最好的解决方案.他们现在这样做in angular2 http module.