Forkjoinを使って、複数のHTTP GETリクエストを実行してから、すべての結果をAngular 8を使用してすべての結果を単純な配列にまとめています。
問題は、1つの文字列の代わりに配列の配列で終わることです。
以下のコードすべてのエンドポイントは文字列のリストを返します。
_autoCompleteValues: any;
ngOnInit() {
let res1 = this.dataMessageService.getFoo1();
let res2 = this.dataMessageService.getFoo2();
let res3 = this.dataMessageService.getFoo3();
let res4 = this.dataMessageService.getFoo4();
let res5 = this.dataMessageService.getFoo5();
forkJoin([res1, res2, res3, res4, res5]).subscribe(data => {
this.autoCompleteValues = data;
console.log(this.autoCompleteValues);
});
}
_
私は何が悪いのですか?すべての結果を1つの大きな配列に組み合わせるにはどうすればよいですか。
あなたはこのようにすることができます
forkJoin([res1, res2, res3, res4, res5])
.pipe(map([res1, res2, res3, res4, res5])
=> [...res1, ...res2, ...res3, ...res4, ...res5])).subscribe(data => {
this.autoCompleteValues = data;
console.log(this.autoCompleteValues);
});
_
マップオペレータを必ずインポートしてください
import { map } from "rxjs/operators";
_
app.component.ts
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { forkJoin } from 'rxjs/observable/forkJoin';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
response = [];
constructor(public http: HttpClient) {
const request1 = this.http.get('https://restcountries.eu/rest/v1/name/india');
const request2 = this.http.get('https://restcountries.eu/rest/v1/name/us');
const request3 = this.http.get('https://restcountries.eu/rest/v1/name/ame');
const request4 = this.http.get('https://restcountries.eu/rest/v1/name/ja');
const requestArray = [];
requestArray.Push(request1);
requestArray.Push(request2);
requestArray.Push(request3);
requestArray.Push(request4);
forkJoin(requestArray).subscribe(results => {
console.log(results);
this.response = results;
});
}
}
_