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'