私はAngular2とnodejs rest APIを使っています。私はObservable.forkJoin()を使ってそれらのすべてが終了するのを待っているので、同じタスクのために1つ以上のhttpリクエストを行う必要があります。 結果をjson構文解析メソッドでマップしてからこの結果にサブスクライブしますが、以前のように結果からjsonプロパティを取得できません。Observable.forkJoin()によって返されたjsonファイルを処理できません。
マイサービスメソッドはObservable.forkJoin()自体を返します。
public rename(file:MyFile, newName:string){
let requests = new Array();
for(let i=0; i<file.sources.length; i++){
let url:string = this.serverUrl;
if(src.name === "src1"){
url += "rename/src1";
} else if (src.name === "src2"){
url += "rename/src2";
}
requests[i] = this.http.get(url)
.map((res:Response) => res.json())
.catch(this.handleError);
}
return Observable.forkJoin(requests);
}
その後、私は別の場所で別の方法でそれを購読する:
this.api.rename(this.selectedFile, newFileName).subscribe(
rep => {
// The editor tells me "Property 'name' doesn't exist on type '{}'."
console.log(rep[0].name);
},
err => { console.error(err); }
);
サーバーが正しく、私は尋ねたデータで応答します。 [0]が正しく設定されている担当者は、それは次のようになります。
Object {name: "res.png", id: "HyrBvB6H-", size: 0, type: "", isShared: false…}
私はそれがタイピングの問題だと仮定します。通常、単純なhttp.get要求では、 'any'オブジェクトを返します。ここで '[] {}'オブジェクトを返します。 res[0]
は '{}'オブジェクトで、jsonプロパティを取得できません。
Observer.forkJoin()を正しく使用していますか?何か不足していますか?助けを事前に
感謝:)
'new array();'を実行するとどうなりますか? –
jonrsharpe