2017-12-13 11 views
0

My Apiは私に警告とエラーのためのさまざまなタイプのステータスコードを与えています。私は応答に基づいて異なるアラートを表示する必要があります。さまざまなステータスコードのAngular4の違いはありますか?

私はこのようなHTTPサービス呼び出しています:

service.ts

@Injectable() 
export class TestService { 

    getData() { 
     return this.http.get('publi/api/list') 
      .map((response: Response) => response.json()) 
      .catch(this.handleError); 
    } 

    public handleError(error: any): Observable<any> { 
     console.log(error, 'error!!!!!!'); 
     return Observable.throw(error.json() || 'server error'); 
    } 
} 

component.ts私があなただった、インターセプタを入れている場合、私はどうなるのか

export class TestComponent implements OnInit { 

    constructor(private testService: TestService) { } 

    ngOnInit() { 
     this.getAllList(); 
    } 

    getAllList() { 
     this.testService.getData() 
      .subscribe(res => this.sucessList(res), 
      err => this.errList(err)) 
    } 

    sucessList(res) { 
     console.log(res, 'sucessApprovalsPermissions'); 
    } 

    // Here I need varions 
    errList(err) { 
     console.log(err, 'err'); 
     this.errApprovalPermissions = err.message.message; 
    } 
} 
+0

レスポンスの例を投稿してください。 – Swoox

答えて

1

を。インターセプタは、リクエストからデータを取得する前に呼び出されるサービスです。例えば

、ここでエラーインターセプタです:

export class ErrorHandlerService implements HttpInterceptor { 

    constructor() { } 

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    return next 
     .handle(req) 
     .catch(err => { 
     /* Do what you want here */ 
     /* The return a thrown Observable, containing whatever you want */ 
     return Observable.throw(err); 
     }); 
    } 
} 

あなたがそのようにように、モジュールにそれを提供する必要があります。

providers: [ 
    { provide: HTTP_INTERCEPTORS, useClass: ErrorHandlerService, multi: true } 
] 

あなたが今やらなければならないことは、ハンドルでありますキャッチのエラーコード、あなたは行くのが良い!

0

あなたはこの

getAllList() { 
    this.testService.getData().subscribe(response => { 
    if (response.status === 200) { 
    // Write your own code here 
    } 
    else if (response.status === 203) { 
    // your own code 
    } 
    }, error => { 
    if (error) { 
    // your own code 
    } 
    }); 
} 

ようにあなたが別のステータスコードを取得することができ、このようにメソッドを購読することができます。

でも、エラーをキャッチしたい場合は!私はあなたがこれに従うことをお勧めします:How to deal with http status codes other than 200 in Angular 2

関連する問題