【发布时间】:2016-04-10 11:48:34
【问题描述】:
我正在尝试在 Angular 中运行一个简单的 HTTP 请求并遇到以下错误:
angular2.dev.js:23941 错误:未捕获(承诺中):异常:在 AlbumListComponent 实例化期间出错!。 原始异常:TypeError:backend.createConnection 不是函数
为简化起见,我将 HTTP 功能分解为最简单的移除服务并直接访问 HTTP 服务和 Observable:
import {Component} from 'angular2/core';
import {Album} from './album';
import {AppState} from './appstate';
import {Observable} from 'rxjs/Observable';
import {Http} from 'angular2/http';
@Component({
selector: 'album-list',
templateUrl: 'Views/albumList.html',
providers: [AlbumService, Http, Response]
})
export class AlbumListComponent {
albums: Array<Album> = [];
title: string = "Album Listing";
errorMessage: string;
constructor(public state: AppState,
public albumService: AlbumService,
public http: Http) {
console.log('AlbumList Constructor' + this.title);
state.activeTab = "albums";
debugger;
http.get(state.urls.albums)
.map(res => {
debugger;
return res.json()
})
//.catch(error => {
// debugger;
// console.error(error);
// return Observable.throw(error.json().error || 'Server error');
//})
.subscribe(albums => this.albums = albums)
//this.getAlbums(); // service removed to simplify
}
}
引导代码(并且 http.dev.js 包含在脚本列表中):
import {bootstrap} from 'angular2/platform/browser';
import {Albumviewer} from './albumviewer.component';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
import {AppState} from './appstate'
import 'rxjs/Rx';
bootstrap(Albumviewer,[
ROUTER_PROVIDERS,
HTTP_PROVIDERS,
]);
我要么收到描述的错误,要么收到有关缺少提供程序的错误(例如 ConnectionBackend)。
如果我删除 Http 访问代码,应用程序运行正常。有了那里的代码,它就会爆炸。我不知道在这里看什么 - 因为错误消息显然是指 HTTP 服务使用的子组件。
【问题讨论】: