Bom gostaria de trazer algumas mensagens de erro no JSON para essa classe abaixo e não sei como fazer isso, minha conexão com o Banco de Dados está OK e voltando o JSON certinho, eu gostaria de ler os Response que estou enviando de volta, mas não sei como fazer isso, pesquisei na internet e não achei, gostaria por exemplo de fazer o seguinte por exemplo se vir um erro Http 404 eu faço alguma coisa, erro 500 outra coisa e sucesso outra coisa, na verdade Mostrar um Modal na tela mostrando essas mensagens que viria no Response, alguém tem uma ideia de fazer isso aqui no service? no retorno do JSON.
Um exemplo como eu queria:
saveUsuario(usuario: Usuario): Observable<Usuario> { if (http code 404 ) { chama modal } else if (http code 500) { chama modal } }
Minha Classe:
import { Injectable } from '@angular/core'; import { Usuario } from "./usuario"; import { Http, Response } from "@angular/http"; import 'rxjs/add/operator/map' import 'rxjs/add/operator/catch'; import { Observable } from "rxjs/Observable"; @Injectable() export class UsuarioAdminService { private apiUrl = 'http://localhost:8080/usuario/admin'; constructor(private http: Http) { } findById(codigoUsuario: number): Observable<Usuario> { return this.http.get(this.apiUrl + '/' + codigoUsuario) .map((res:Response) => res.json()) .catch((error:any) => Observable.throw(error.json().error || 'Error')); } saveUsuario(usuario: Usuario): Observable<Usuario> { return this.http.post(this.apiUrl, usuario) .catch((error:any) => Observable.throw(error.json().error || 'Server error')); } deleteUsuarioById(codigoUsuario: number): Observable<boolean> { return this.http.delete(this.apiUrl + '/' + codigoUsuario) .map((res:Response) => res.json()) .catch((error:any) => Observable.throw(error.json().error || 'Server error')); } updateUsuario(usuario: Usuario): Observable<Usuario> { return this.http.put(this.apiUrl, usuario) .map((res:Response) => res.json()) .catch((error:any) => Observable.throw(error.json().error || 'Server error')); } findAll(): Observable<Usuario[]> { return this.http.get(this.apiUrl) .map((res:Response) => res.json()) .catch((error:any) => Observable.throw(error.json().error || 'Server error')); } }