2017-10-29 8 views
0

typescriptコードはPOSTエンドポイントを呼び出す必要があります。エンドポイントは、本体パラメータのない単なるURLです。私はちょうどURLと他のパラメータを提供することによってhttp.post()メソッドを試してみました。urlとボディパラメータなしの角度のあるhttpポストメソッドリクエスト

サンプルコード

let postUrl = "http://hostname:9893/service/fetch/72637"; 

this.http.post(postUrl, {}).map((res:Response) => res.json()).subscribe(data => { 
     console.log("post url: " + data); 
}); 

エラー:

core.es5.js:1020 message:"Cannot read property 'post' of undefined" stack:"TypeError: Cannot read property 'post' of undefined\n at HTMLTableRowElement.<anonymous> (http://localhost:3000/5.chunk.js:222:23)\n at HTMLTableRowElement.wrapFn [as __zone_symbol___onclick] (http://localhost:3000/polyfills.bundle.js:6601:39)\n at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:3000/polyfills.bundle.js:5969:31)\n at Object.onInvokeTask (http://localhost:3000/vendor.bundle.js:66347:33)\n at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (http://localhost:3000/polyfills.bundle.js:5968:36)\n at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (http://localhost:3000/polyfills.bundle.js:5736:47)\n at HTMLTableRowElement.ZoneTask.invoke (http://localhost:3000/polyfills.bundle.js:6031:38)" 
__proto__:Error {constructor: , name: "TypeError", message: "", …} constructor:function TypeError() { … } 


更新:
溶液:

上記のコードは、コールバック内で使用されているので、このコンテキストは、したがって、異なるコンテキストに更新されるHTTPれます利用不可。これでバインドが問題を解決しました。

答えて

0
import {Http} from '@angular/http'; 

export class Myservice{ 
    constructor(public http: Http) { } 
} 

を注入しなければなりません。これでバインドが問題を解決しました。

0

HTTPは、上記のコードは、コールバック内で使用されているので、このコンテキストは、したがって、HTTPが使用可能でない異なるコンテキストに更新されるコンストラクタに

+0

インポートおよびコンストラクタのコードは、コード内にすでに存在しています。同じクラスでthis.http.get(url)メソッドが正常に実行されます。 –

関連する問題