Angular 2 http get no get


Soy nuevo en Angular 2 todavía aprendiendo estoy tratando de golpear una url con una llamada get pero el get doen't parece ir a través incluso en la red del navegador no puedo encontrar que se llama a la url get.

El programa va a ese método de registro de consola por encima y por debajo de esa llamada get pero nada para la llamada get

Mi método de servicio

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 importado en app.módulo.ts

Mi captura de pantalla de consola

Consola

Author: Milad, 2016-12-29

2 answers

Http utiliza rxjs y es un observable frío/perezoso, lo que significa que debe suscribirse a él para que funcione.

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

O si desea suscribirse desde otro lugar , debe devolver el http.obtener método como este::

 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();
    });
    } 

Y luego:

   getAllPersons().subscribe();
 66
Author: Milad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-29 14:10:31

Método debe devolver la respuesta de la llamada api utilizando Observable.

Servicio.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');
  }
}

Las opciones y encabezados son opcionales.

Nota: en lugar de (<any>) puede definir su tipo de datos o cualquier otro tipo definido en el que obtenga datos en su respuesta.

Gracias.

 1
Author: Amol Bhor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-29 14:38:00