Ich benutze Winkel 2, um eine Anfrage zu bekommen und eine Anfrage zu machen. Meine Anfrage geht gut, aber für meinen Beitrag, Ich sehe nicht, die Anfrage wird bei der Überprüfung meiner Firebug Net-Panel gemacht.Angular 2 HTTP-Post-Anfrage wird nicht aufgerufen
Die Code-Methoden sehen wie folgt aus. Ich habe auch Subscribe-Methoden, die sie aus einer Komponentenklasse aufrufen.
import {Injectable} from "angular2/core";
import {Http, Response, Headers, RequestOptions, Jsonp, URLSearchParams} from "angular2/http";
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class MyService{
constructor (private _http: Http){}
testPost(){
var json = JSON.stringify({"userId": 111, "givenName": "CZ"});
var body = "json="+json;
var headers = new Headers({ 'Content-Type': 'application/json' });
var options = new RequestOptions({ headers: headers });
return this._http.post("http://mylocal.post.url", body, options)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
alert("test whether this method is reached");
let body = res.json();
return body.data || { };
}
private handleError (error: any) {
alert("test whether this method is reached");
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
//testGet method is running well
testGet(link:string){
return this._http.get(link)
.map(res => res);
}
}
meine abonnierende Methode onTestPost(), die einer Schaltfläche auf der Seite zugeordnet ist.
onTestPost(){
this.myService.testPost()
.subscribe(
data => this.getData = JSON.stringify(data),
error => alert(error),
() => console.log("Finished")
);
}
Ich legte eine Warnung-Anweisung am Anfang von zwei Hilfsmethoden. Keine der Warnungen ist erreicht. Und ich sehe keine Anfrage an meine lokale Post-URL beim Debuggen mit Firebug.
Während meine testGet-Methode korrekt funktioniert, weiß ich nicht, was für die testPost fehlt.
Der Code sieht in Ordnung, die meisten wahrscheinlich, dass Sie nicht wirklich richtig abonniert haben. – dfsq
Nur für den Fall, dass etwas wie ein Mock-Backend die Anfrage nicht abfängt. –