Angular 2 http.post() nie wysyła żądania
Kiedy składam żądanie post, angular 2 http nie wysyła tego żądania
this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions())
Post http nie jest wysyłany na serwer, ale jeśli złożę żądanie w ten sposób
this.http.post(this.adminUsersControllerRoute, JSON.stringify(user), this.getRequestOptions()).subscribe(r=>{});
Czy to jest zamierzone, a jeśli tak, czy ktoś może mi wyjaśnić dlaczego ? Czy to robak ?
3 answers
Ponieważ metoda post
klasy Http
zwraca obserwowalną, musisz ją zapisać, aby wykonać proces inicjalizacji. Obserwatorzy są leniwi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-24 19:43:01
Metoda Get nie wymaga użycia metody subscribe, ale metoda post wymaga subcribe. Pobierz i po przykładowe kody są poniżej.
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<Post[]>
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) => <Post[]>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();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 20:47:33
Musisz zapisać się do zwracanego obserwowalnego, jeśli chcesz, aby wywołanie zostało wykonane.
Patrz również Dokumentacja Http.
Zawsze Subskrybuj!
Metoda
HttpClient
nie rozpoczyna żądania HTTP, dopóki nie wywołasz subscribe () na obserwowalnej zwracanej przez tę metodę. Dotyczy to wszystkich metodHttpClient
.AsyncPipe subskrybuje (i wypisuje się) dla ciebie automatycznie.
Wszystkie obserwacje zwrócone z
HttpClient
metody są zimne według projektu. Wykonanie żądania HTTP jest odroczone, co pozwala rozszerzyć obserwowalne o dodatkowe operacje, takie jaktap
icatchError
, zanim cokolwiek się stanie.Wywołanie
subscribe(...)
wyzwala wykonanie observable i powodujeHttpClient
skomponowanie i wysłanie żądania HTTP do serwera.Możesz myśleć o tych obserwowalnych jako o schematach dla rzeczywistych żądań HTTP.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-27 10:42:30