24

REST 応答を BLOB にコピーしたいのですが、応答オブジェクトにまだ実装されていないためblob()、いくつかのことを実行できません。arrayBuffer()応答本文はプライベート変数です。

...
return this.http.get(url, {params: params, headers: headers})
     .map(res => {   
        // can't access _body because it is private
        // no method appears to exist to get to the _body without modification             
        new Blob([res._body], {type: res.headers.get('Content-Type')});
     })
     .catch(this.log);
...

これらのメソッドが実装されるまで使用できるソリューションはありますか?

4

5 に答える 5

49

どこにも文書化されていない文字列として本体にアクセスするためのはるかに簡単な解決策があります。

let body = res.text()
于 2017-01-01T19:02:40.507 に答える
6

同じ問題が発生しているときにこの質問を見つけたので (Angular のドキュメントは現在更新されていません)、次を使用できます。

let blob = new Blob([response.arrayBuffer()], { type: contentType });

何らかの理由で Angular 2 の古いバージョンを使用している場合の別の回避策は次のとおりです。

let blob = new Blob([(<any> response)._body], { type: contentType });
于 2016-11-04T22:03:37.790 に答える
1

次の PR がマージされる前に、他のソリューションが表示されません。

コンパイルエラーがありますが、フィールドは実行時に使用できます...

于 2016-03-18T15:15:02.050 に答える