Angular 2 http.post () no está enviando la solicitud

Cuando realizo una solicitud posterior, el angular 2 http no envía esta solicitud

this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions()) 

la publicación http no se envía al servidor, pero si realizo la solicitud de esta manera

 this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions()).subscribe(r=>{}); 

¿Es esto intencional y si es así alguien me puede explicar por qué? O es un error?

Como el método de post de la clase Http devuelve un elemento observable, debe suscribirse para ejecutar su proceso de inicialización. Los observables son flojos.

Deberías echarle un vistazo a este video para más detalles:

El método Get no requiere el método de suscripción, pero el método de publicación requiere la suscripción. Obtenga y publique códigos de muestra a continuación.

 import { Component, OnInit } from '@angular/core' import { Http, RequestOptions, Headers } from '@angular/http' import 'rxjs/add/operator/map' import 'rxjs/add/operator/catch' import { Post } from './model/post' import { Observable } from "rxjs/Observable"; @Component({ templateUrl: './test.html', selector: 'test' }) export class NgFor implements OnInit { posts: Observable model: Post = new Post() /** * */ constructor(private http: Http) { } ngOnInit(){ this.list() } private list(){ this.posts = this.http.get("http://localhost:3000/posts").map((val, i) => val.json()) } public addNewRecord(){ let bodyString = JSON.stringify(this.model); // Stringify payload let headers = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON let options = new RequestOptions({ headers: headers }); // Create a request option this.http.post("http://localhost:3000/posts", this.model, options) // ...using post request .map(res => res.json()) // ...and calling .json() on the response to return data .catch((error:any) => Observable.throw(error.json().error || 'Server error')) //...errors if .subscribe(); } } 

Debe suscribirse al resultado observado si desea que se ejecute la llamada.

Ver también la documentación de Http .

¡Suscríbete siempre!

Un método HttpClient no inicia su solicitud HTTP hasta que llame a subscribe () en el observable devuelto por ese método. Esto es cierto para todos los métodos HttpClient .

El AsyncPipe se suscribe (y cancela la suscripción) automáticamente.

Todos los observables devueltos por HttpClient métodos del HttpClient son fríos por diseño. La ejecución de la solicitud HTTP se pospone , lo que le permite extender lo observable con operaciones adicionales como tap y catchError antes de que ocurra realmente algo.

Llamar a subscribe(...) desencadena la ejecución de lo observable y hace que HttpClient y envíe la solicitud HTTP al servidor.

Puede pensar en estos observables como planos para las solicitudes HTTP reales.