2017-10-31 9 views
0

JSONを返す単純なget要求をバックエンドに実行することに問題があります。自分のコードでこのget要求を実行すると、observableが返されます。これはsubscribeメソッドを通じて変数に直接割り当てられます。しかし、このメソッド内でのみassingされ、利用可能であり、どこにでも定義されていません。HttpClientModuleでGETリクエストを正しく実行する方法

APIサービスgetメソッド:

public getAllProcessCategories() { 
    return this.http.get(this.apiURL + 'typeOne=PROCESSCATEGORIES&typeTwo=PROCESSCATEGORIES'); 
    } 

APIの使用方法:

​​

Iknow私はHttpRequestのが終了する前に結果を取得したいので、それは、あること。では、角度4でget要求を実行する最良の方法は、JSONを返し、このJSONを解析し、それをクラスにマップしてコンポーネントで使用するものです。

+0

を購読するprintAfterRequestを移動すると

return this.http.get(this.apiURL+ 'typeOne=PROCESSCATEGORIES&typeTwo=PROCESSCATEGORIES') .map(res => { return res.json(); }) .catch(this.handleError); 

にあなたのAPIの方法を微調整。今、 'printAfterRequest'メソッドは' fillProcessCategories'が完了する前に起こります。 – toskv

答えて

1

少し私はあなたが観測および非同期呼び出しがどのように機能するかについて少し読むことをお勧めコールバック

fillProcessCategories() { 
    this.api.getAllProcessCategories().subscribe(data => { 
     this.processCategories = data['entities']; 
     this.printAfterRequest(); 
     console.log(this.processCategories); 
    }); 
    } 
+0

親愛なるVitalii、Angular 4.3に変更されたので、jsonマップはオブジェクトとしてデフォルトで返されるので、.jsonマップはもはや必要ではありません(利用できません)。それでも私のprocessCategoriesはコールバック内でのみ満たされ、後で見つかる場所はありません。 –

+0

テンプレートにバインドしようとしましたか?非同期呼び出しが完了した後で使用できるようにする必要があります。 ngOnInit()では、非同期要求が完了してロードするのに時間がかかるため、すぐには使用できません。 –

+0

迅速な回答とお手伝いをありがとうございます。私はそれをテンプレートするときに私は価値を得る。だから今私の質問は、私は正しくこのように働いているか、要求を取得し、コンポーネントでそれらを処理するためのより良い方法ですか? –

関連する問題