我不能为我的生活弄清楚为什么我不能循环这个http调用的响应。无论出于何种原因,它抱怨virtualenvs/virtualenv_name/bin/python
的类型是一个对象,但是当我控制台登录时,我可以像我期望的那样使用数组。
data
修改
Console.log向我展示了这个
编辑:2
我也有一个拦截器设置,这可能导致它吗?
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { URLSearchParams } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/forkJoin';
promises.push(Observable.create(observer => {
this.http.post(`items/event/${this.event.auction_code}`, body.toString(), {
headers: new HttpHeaders().set('Content-Type', 'application/X-www-form-urlencoded' ),
}).subscribe(data => {
var classifiedData;
data.forEach((item)=>{
classifiedData.push(new Item(item));
});
observer.next(data);
observer.complete();
},error => {
observer.throw(error);
});
}));
...
Observable.forkJoin(promises).subscribe(results => {
results.forEach((result,i)=>{
data.content.template[i].data = result;
});
});
答案 0 :(得分:8)
它要求您为请求提供显式类型,如下所示:
this.http.post<any[]>('...
根据Angular HttpClient Guide,HttpClient
在从JSON解析它之后不知道它是什么,所以它假定Object
作为响应的类型,因此typescript抱怨这个。
答案 1 :(得分:0)
对象可能缺少显式数组语法。例如,如果错误在这一行
this.subscriptions.forEach(...);
检查“订阅”的定义位置
之前
private subscriptions: Subscription;
之后
private subscriptions: Subscription[];