2017-11-15 4 views
1

저는 5.0의 TypeScript를 사용하고 있습니다.각도/이오니아 - JSON "오류"속성 처리

export interface JSONResponse { 
    error?: { 
    code: number, 
    message: string 
    }; 
    data?: {}; 
} 

서버에서 데이터를 얻을 내 서비스의 기능은 다음과 같습니다 : 내 백엔드 응답은이 인터페이스에 요약되어

httpGet(url: string, httpParams: HttpParams) { 
    return new Promise((resolve, reject) => { 
    this.http.get<LoginResponse>(url, {params: httpParams}) 
     .subscribe(res => { 
     resolve(res.data); 
     }, err => { 
     // handle http get related errors here 
     console.log(err); 
     }); 
    }); 
} 

그리고이 서비스를 소비하는 구성 요소는 템플릿을 렌더링하기 위해 :

buttonClicked(event) { 
    this.myService.httpGet('myAPIurl', someRequestParams) 
    .then((data) => { 
     this.myData = data; 
    }, (err) => { 
     console.log(err); 
    }); 
} 

내 백엔드의 응답 오류 검사를 처리 할 장소는 어디입니까?

즉, 속성이 data 인 경우 응답이 성공하고 내 데이터를 올바르게 처리합니다. 속성이 error 인 경우 코드/메시지 오류와 함께 사용자에게 알립니다.

+0

현재 어떤 문제가 있습니까? – Sampath

+0

JSON 구문 분석을 수행 할 코드의 위치를 ​​파악하고 데이터 또는 오류 필드가 존재하는지 여부를 확인한 다음 UI에서 처리 된 데이터 또는 오류를 알려줍니다. –

+0

왜 수 없습니다 여기에'(err) => { console.log (err);''buttonClicked()'이벤트에서? – Sampath

답변

0

좀 더 일반적인 방법으로 수행해야하는 경우 IonicErrorHandler을 사용할 수 있습니다.

IonicErrorHandler은 이온의 데브가 서버를 구축 사용하는 경우 오버레이로 및 디스플레이 런타임 오류를 처리 기본 콘솔 오류를 차단합니다. 당신이 그것을 사용자 정의하려면

import { NgModule, ErrorHandler } from '@angular/core'; 
import { IonicErrorHandler } from 'ionic-angular'; 

@NgModule({ 
    providers: [{ provide: ErrorHandler, useClass: IonicErrorHandler }] 
}) 
class AppModule {} 

당신은 그것도 할 수 있습니다.

class MyErrorHandler implements ErrorHandler { 
    handleError(err: any): void { 
    // do something with the error 
    } 
} 

@NgModule({ 
    providers: [{ provide: ErrorHandler, useClass: MyErrorHandler }] 
}) 
class AppModule {}