Edit: Lesen Sie den Teil am Ende der Frage!TypeError: error.json ist keine Funktion
Mein Service-Code:
import { Http, Response, Headers } from "@angular/http";
import { Injectable } from "@angular/core";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { Observable } from "rxjs";
import { Client } from "./client.model";
@Injectable()
export class ClientService {
private clients: Client[] = [];
constructor(private http: Http){}
addClient(client: Client) {
this.clients.push(client);
const body = JSON.stringify(client);
const headers = new Headers({'Content-Type': 'application/json'});
return this.http.post('http://localhost:3000/client', body, {headers: headers})
.map((response: Response) => response.json())
.catch((error: Response) => Observable.throw(error.json()));
}
getClients() {
return this.clients;
}
deleteClient(client: Client) {
}
}
Und in meiner Komponente Ich habe diese einreichen Funktion:
onSubmit(form: NgForm) {
let email = form.value.email;
let password = form.value.password;
let firstName = form.value.firstName;
let lastName = form.value.lastName;
const client = new Client(email, password, firstName, lastName);
this.clientService.addClient(client)
.subscribe(
data => console.log(data),
error => console.error(error)
);
form.resetForm();
}
Es gibt ähnliche Fehler here und here. Die Antwort ist immer, die rxjs-Funktionen einzuschließen, aber ich mache das, deshalb bin ich mir nicht ganz sicher, warum ich diesen Fehler bekomme.
Edit:
Also das eigentliche Problem war nicht diese Funktion, sondern eine fehlende "/" vor meiner Route in der Haupt app.js Datei. Nachdem das gelöst war, war das Problem weg.
Mögliche Duplikat [Angular2: res.json ist keine Funktion] (http://stackoverflow.com/questions/39162056/angular2-res-json-is-not- a-function) – Igor
@Igor Du hast meine Lochfrage gelesen, oder? Ich habe darauf hingewiesen, dass es ähnliche Probleme gibt, die für mich nicht funktionieren. – Zoker
Ich habe deine ganze Frage gelesen. Der Grund dafür ist, dass es json nicht wie im Duplikat enthält. Es gibt andere ähnliche Fragen, alle mit dem gleichen Täter. Debuggen Sie in Ihrem Browser und überprüfen Sie den Status der Antwort in dem Fehler, Sie werden wahrscheinlich feststellen, dass tatsächlich kein JSON verfügbar ist. Sie können dies auch tun, indem Sie das Ergebnis auf der Netzwerk-IO-Registerkarte Ihres Browser-Debuggers auschecken. – Igor