我正在尝试创建一个服务,返回我的组件可以订阅的Observable.但是我收到以下错误:
Property 'subscribe' does not exist on type 'Observable'.
Run Code Online (Sandbox Code Playgroud)
我目前正在运行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);
}
}
Run Code Online (Sandbox Code Playgroud)
更改代码以返回"任何"类型似乎可行,但这消除了使用TypeScript的一些优点.有没有什么好方法可以在Angular2的当前版本中使用Observables的严格类型?
返回的http.get是Observable来自rxjs,而不是angular2 Observable.作为临时解决方案,您可以rxjs Observable从"@activex/rxjs/dist/cjs/Observable" 导入(请参阅此plunker).
import Observable from '@reactivex/rxjs/dist/cjs/Observable';
class Backend {
// ...
getTeams() : Observable {
return this.http.get('api/teams.json')
.map(res => res.json());
}
}
Run Code Online (Sandbox Code Playgroud)
但恕我直言改变代码返回"任何"是目前最好的解决方案.他们现在在angular2 http模块中执行此操作.
| 归档时间: |
|
| 查看次数: |
9842 次 |
| 最近记录: |