'对象'类型上不存在属性'forEach'

Jor*_*dan 5 rxjs typescript angular

我不能为我的生活弄清楚为什么我不能循环这个http调用的响应.无论出于何种原因,它抱怨的data是一个对象的类型,但是当我控制台登录时,我可以像我期望的那样使用一个数组.

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;
   });
});
Run Code Online (Sandbox Code Playgroud)

编辑:

Console.log告诉我这个

在此输入图像描述

编辑:2

我也有一个拦截器设置,这可能导致它吗?

@Injectable()
export class NoopInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const duplicate = req.clone({
      url: `${environment.apiUrl}/${req.url}`,
      params: req.params.set('key', environment.apiKey)
    });
    return next.handle(duplicate);
  }
}
Run Code Online (Sandbox Code Playgroud)

len*_*ndc 15

它要求您为请求提供显式类型,如下所示:

this.http.post<any[]>('...
Run Code Online (Sandbox Code Playgroud)

根据Angular HttpClient Guide,HttpClient从JSON解析它之后不知道它是什么,因此它假定Object为响应的类型,因此typescript抱怨这一点.