我在教程中找到了这个示例代码:
getRandomQuote() { this.http.get('http://localhost:3001/api/random-quote') .map(res => res.text()) .subscribe( data => this.randomQuote = data, err => this.logError(err), () => console.log('Random Quote Complete') ); }
但是当试图使用它时,我只得到TypeError: this.http.get(...).map is not a function in [null]
:
getChannels():Promise{ return this.http.get('...') .map(function (response:Response) { ... }).toPromise(); }
我的Typescript编译器告诉我这些方法是可用的,但是当检查http.get()
它们的返回值时,它们就丢失了.
我使用了当前angualar2入门指南的package.json:
"dependencies": { "angular2": "2.0.0-beta.0", "systemjs": "0.19.6", "es6-promise": "^3.0.2", "es6-shim": "^0.33.3", "reflect-metadata": "0.1.2", "rxjs": "5.0.0-beta.0", "zone.js": "0.5.10" },
...
在这一点上我有什么想法可能会出错?
Observable
默认情况下只有几个运算符.你必须明确导入它们:
import 'rxjs/add/operator/map';
或者,如果您不想考虑它,只需加载所有内容(例如,在您的引导程序文件中):
import 'rxjs/Rx';
您希望index.html看起来像这样,因此system.js可以找到您在组件中导入的所有rxjs依赖项.