2016-10-16 49 views
5

Tôi muốn hỏi xem làm cách nào tôi có thể phân tích cú pháp nội dung lỗi mà API trả lại cho tôi.Nội dung lỗi phân tích cú pháp trong Angular 2

Đây là hình ảnh của sự trở lại API: enter image description here

Dưới đây là mã của tôi:

login(username,password){ 
     let headers = new Headers(); 
     headers.append('Content-Type','application/json'); 

     return this.http.post(this.configEnvironment.url() + "oauth/access_token", 
      JSON.stringify(
       { 
        username: username, 
        password: password, 
        grant_type: "password", 
        client_id: "xxxxxxx", 
        client_secret: "xxxxxxxx" 
       } 
      ), 
      { headers } 
     ) 
     .map(res => res.json()) 
     .catch((err:any) =>{ 
      console.log(err); 
      return Observable.throw(new Error(err)); 
     }); 

    } 

tôi có thể truy cập vào địa chỉ URL, tình trạng, statusText và vv sử dụng này:

err.status,err,url,error.statusText 

Vấn đề của tôi là tôi không thể có được giá trị của cơ thể lỗi.

Trả lời

11

catch của bạn thực sự đang nhận được Response. Bạn có thể truy cập thông tin chi tiết của nó với json()

import { Response } from "@angular/http"; 
... 
.catch((err:Response) =>{ 
      let details = err.json().error; 
      console.log(details); 
      return Observable.throw(new Error(details)); 
     }); 

lưu ý: Câu trả lời này là về thư viện @angular/http. Kể từ Angular 5, thư viện này không được dùng nữa để ủng hộ @angular/common/http

+0

Cảm ơn Man! điều này giải quyết vấn đề của tôi –

+0

@SydneyLoteria Không sao cả. Bạn sẽ nhận được hỗ trợ IDE tốt hơn nếu bạn thay đổi kiểu 'err' từ' any' thành 'Response' như tôi vừa làm. – BeetleJuice

+0

Phương pháp Angular 5 @ angular/common/http là gì? –

Các vấn đề liên quan