angular2不能连接到服务器

我正在Angular 2上工作,而我的后端是NodeJs。 我只是按照教程连接到服务器,但它不起作用。 这是我在app.component.ts中的代码:

this.http.get<Contributor[]>('http://localhost:3000/message/').subscribe(data => { // data is now an instance of type ItemsResponse, so you can do this: this.contributors = data; console.log(this.contributors); }); console.log(this.contributors); 

第一个“this.contributors”显示的数据很好,但第二个是未定义的。 有什么可以帮助我吗? 非常感谢!

这是因为JavaScript是asynchronous的。 在发送HTTP请求之后,angular度不会等待事件订阅。 它只是继续执行。 这就是为什么第二个console.log(this.contributors); 首先执行,它是未定义的。 在订阅事件后,它显示了与数据订阅方法内的console.log

您需要使用map()因为它返callback用者创build的Observable进行订阅。

所以你可以这样做:

 getData():any { return this.http.get<Contributor[]>('http://localhost:3000/message/').map( (response) => { this.contributors = response; console.log(this.contributors); return JSON.stringify(this.contributors); } } 

然后在你的组件下标就好了:

 this.getData().subscribe(data => {/* here you can access data */ console.log(data); }); 

确保你导入了map运算符:

 import 'rxjs/add/operator/map'