2017-11-09 12 views
0

httpリクエストを呼び出すと思われるサービスを作成しました。コンポーネントがngOnInit()からその関数を呼び出しています。 httpが要求を取得する前に呼び出しを終了するコンポーネントとして、ページにデータを表示できません。コンポーネントからのサービスコールでHTTP応答を待つ4

ヘルプが必要です。 サービス:

import {HttpClientModule} from '@angular/common/http'; 
import { OnInit, Injectable } from '@angular/core'; 
import { HttpClient } from '@angular/common/http'; 
import { Observable } from 'rxjs/Observable'; 
@Injectable() 
export class studentsInfoService implements OnInit 
{ 
    _StudentsInfo; 
    ngOnInit(): void { 

    } 

    constructor(private http: HttpClient){}; 

    getStudentsList():Observable<any>{ 
      this.http.get("http://192.168.2.5:81/api/values").subscribe(data=> 
      { 
       console.log("Invoked getStudentsList :)"); 
       this._StudentsInfo = data; 
       console.log(data); 

       return data; 
      },err=>{ 
       console.log("error in getStudentsList"); 
       return null; 
      }) 
      return this._StudentsInfo; 
    } 

} 

コンポーネント:

import { Component, OnInit } from '@angular/core'; 
import {studentsInfoService} from '../../Services/studensInfo.service'; 

@Component({ 
    selector: 'app-students-info', 
    templateUrl: './students-info.component.html', 
    styleUrls: ['./students-info.component.css'], 
    providers:[studentsInfoService] 
}) 
export class StudentsInfoComponent implements OnInit { 

    _sData=null; 
    constructor(private sInfoService:studentsInfoService) { } 

    ngOnInit() { 
      let x = this.sInfoService.getStudentsList(); 
      x.subscribe(x=> this._sData = x); 

    } 
} 

取得エラーエラー例外TypeError:プロパティを読んで、未定義 の '購読する' ことはできませんStudentsInfoComponent.webpackJsonp .../../../../../src/app on Component サービスメソッドへの同期呼び出しを行う必要があります。

答えて

0

このエラーが原因 this.http.get( "http://192.168.2.5:81/api/values").subscribeで購読使用している

おかげで、()

使用すると、 "マップ" の代わりに "購読します"これで、コードは

return this.http.get("http://192.168.2.5:81/api/values").map(
      { 
       console.log("Invoked getStudentsList :)"); 
       this._StudentsInfo = data; 
       console.log(data); 
       return data; 
      },err=>{ 
       console.log("error in getStudentsList"); 
       return null; 
      }) 
) 
+0

のようになります。親愛なるrajagrur、ありがとうございます。私はhttpの.mapメソッドを見つけることができません。サブスクライブを表示しています –

+0

import 'rxjs/add/operator/map'これはあなたのサービスに追加されるべきです –

関連する問題