Teraz tak jak ja http żądania (zapożyczone z this answer) jest taka:Jak radzić sobie z kodów stanu HTTP inny niż 200 kątowej 2
POST(url, data) {
var headers = new Headers(), authtoken = localStorage.getItem('authtoken');
headers.append("Content-Type", 'application/json');
if (authtoken) {
headers.append("Authorization", 'Token ' + authtoken)
}
headers.append("Accept", 'application/json');
var requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: this.apiURL + url,
headers: headers,
body: JSON.stringify(data)
})
return this.http.request(new Request(requestoptions))
.map((res: Response) => {
if (res) {
return { status: res.status, json: res.json() }
}
});
}
Działa to dobrze, z wyjątkiem faktu, że angular2 wola powiedzie się, jeśli kod statusu zwracany jest coś innego niż 200. na przykład, jeśli użytkownik chce, aby umieścić coś i serwer zwraca 400, kątowe 2 rzuci wyjątek:
przechwycony wyjątek: [object Object]
Jak mogę tego uniknąć? Chciałbym obsłużyć te kody statusu w mojej aplikacji, aby zwiększyć wygodę użytkownika (pokazywać błędy itp.).
to możliwe, aby nie trzeba pisać każdy kod stanu jako warunek? Tak jak w przypadku zwrotu, status, a następnie moje komponenty mogą określić, co zrobić z tymi kodami statusu. –
Tak, możesz po prostu zwrócić błąd bez sprawdzania stanu, który zależy od tego, w jaki sposób chcesz przekazać blok błędu. –
Czy mógłbyś to edytować? Trudno jest to zrobić za pomocą istniejącego przykładu. –