2016-12-29 2 views
23

나는 Angular 2에 익숙하지 않다. 나는 get call로 url을 치려고 노력하고 있지만 do not는 브라우저의 네트워크에서조차도 통과하지 못하는 것으로 보인다. 이 프로그램은 app.module.ts에서 전화를받을Angular 2 http get not get

내 서비스 방법

import { Headers, Http, Response } from '@angular/http'; 
import { Injectable } from '@angular/core'; 
import { Persons } from './mock-people'; 
import { Person } from './person'; 
import {Observable} from 'rxjs/Rx'; 

    getAllPersons():void{ 
     console.log("Here"); 
     this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { 
      console.log(response.json()); 
      response.json(); 
     }); 
     console.log("Comes here 2"); 
     } 

수입 HttpModule을 요구하지 아무것도 얻을 위, 그 아래에 그 방법 콘솔 로깅 것입니다

내 콘솔 스크린 샷

Console

답변

48

Http는 rxjs를 사용하며 추위/게으른 관찰 가능합니다. 즉, 작동하도록하려면 구독해야합니다. 당신이 다른 곳에서 가입하고자 할 경우

this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { 
       console.log(response.json()); 
       response.json(); 
      }).subscribe(); 

또는이 같은 http.get 방법을 반환해야합니다 : 다음

getAllPersons():Observable<any>{ 
    console.log("Here"); 
     return this.http.get(`http://swapi.co/api/people/1`).map((response:Response) => { 
     console.log(response.json()); 
     response.json(); 
    }); 
    } 

과 :

getAllPersons().subscribe(); 
+0

감사합니다.하지만 우리가 donot 호출 여기에 가입하지만 호출하는 메서드를 호출하는 이유는 다음 작동합니다 –

+0

둥지 부분은 콘솔 또는 어디서나 오류가 아니었다 :) –

+0

감사합니다 그것은 거의 3-4 inorder 이 atlast 게시했다, 나를 도와 일부 오류가 있어야합니다 :) –

1

방법은 반환해야 Observable을 사용하여 API 호출의 응답.

service.cs

import { Http, Jsonp, Response, Headers, RequestOptions } from '@angular/http'; 
import { Injectable } from '@angular/core'; 
import { Persons } from './mock-people'; 
import { Person } from './person'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/forkJoin'; 

@Injectable() 
export class Service { 
    constructor(private jsonp: Jsonp, private _http: Http) { } 

    getAllPersons():Observable<any>{ 
    console.log("Here"); 

    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers, method: 'get' }); 

    return this._http.get('http://swapi.co/api/people/' + personId) 
     .map((res:Response) => { 
      return <any>res.json(); 
     }) 
     .catch(this.handleError);   

    console.log("Comes here 2"); 
    } 

    private handleError(error: Response) { 
    console.error(error); 
    return Observable.throw(error.json().error || ' error'); 
    } 
} 

옵션 & 헤더는 선택 사항입니다.

참고 : (<any>) 대신 응답에 데이터를 가져 오는 데이터 유형이나 기타 정의 된 유형을 정의 할 수 있습니다.

감사합니다.

+0

구독하지 않아도이 메소드 또는 호출 메소드 –

+0

에서지도를 구독해야 호출이 생성되지 않습니다. 그렇다면 당신이 옳습니다. 우리가 구성 요소 방법으로 할 수있는 것은 우리가 봉사를 부르는 것입니다. –

+0

this._commonService.getPersonDetails (personId) .구독 ( 데이터 => {// 코드 } 오류 => { this.ajaxLoader.completeLoading(); } () => { this.ajaxLoader.completeLoading();} ) ; –