提问人:Jordan 提问时间:9/22/2017 最后编辑:Jordan 更新时间:5/21/2021 访问量:27713
属性“forEach”在类型“Object”上不存在
Property 'forEach' does not exist on type 'Object'
问:
我一辈子都无法弄清楚为什么我不能循环这个 http 调用的响应。无论出于何种原因,它都在抱怨 of 的类型是一个对象,但是当我控制台记录它时,我可以像我期望的那样使用数组。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;
});
});
编辑:
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);
}
}
答:
32赞
lenilsondc
9/22/2017
#1
它要求你为请求提供一个显式类型,如下所示:
this.http.post<any[]>('...
根据 Angular HttpClient 指南,从 JSON 解析后不知道它是什么,所以它假设为响应类型,所以打字稿抱怨这一点。HttpClient
Object
1赞
SushiGuy
5/21/2021
#2
对象可能缺少显式数组语法。例如,如果此行上有错误
this.subscriptions.forEach(...);
检查定义“订阅”的位置
以前
private subscriptions: Subscription;
后
private subscriptions: Subscription[];
评论
console.log(data)
Property 'map' does not exist on type 'Object'.
data