2017-09-21 8 views
0

私の人生の間、私はこのhttp呼び出しからの応答をループできない理由を理解できません。何らかの理由でdataのタイプがオブジェクトであると不平を言っていますが、私がログオンするときには、私が期待しているような配列にすることができます。'forEach'プロパティが 'Object'タイプに存在しません

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が私にこの

enter image description here

編集示しています。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); 
    } 
} 
+1

期待どおりの配列ではないようです。 'console.log(data)'は何を出力しますか? –

+0

'Object 'に' Property' map 'は存在しません。私が言及したのと同様に、コンソールからログアウトしたコンソールはコンソールに配列を表示します。 – Jordan

+0

質問を、コンソールで表示されているもののスクリーンショットで更新しました – Jordan

答えて

1

それはそうのような要求のための明示的な型を与えるためにあなたを必要とします。それはタイプとしてObjectを前提として

this.http.post<any[]>('... 

Angular HttpClient Guideによると、それはJSONからそれを解析した後に何であるか知りませんレスポンスのため、タイスクリプトはそれについて不平を言う。

関連する問題