我有一个Angular 2服务,它有一个调用Webservice的方法

import { Injectable } from '@angular/core';
import { Headers, Http, RequestMethod, Request, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/observable/of';

private setHeader(): Headers {

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

    return headers;
}

private async callService(service: string, request: any): Promise<any> {

        var requestoptions = new RequestOptions({
            method: RequestMethod.Post,
            url: this.urlLit + service,
            headers: this.setHeader(),
            body: request != null ? JSON.stringify(request) : null,
            withCredentials: true
        })


      let result = await this.http.request(new Request(requestoptions))
            .map(res => {
                if (res) {
                    if (res.status === 201) {
                        return res.json().d
                    }
                    else if (res.status === 200) {
                        return res.json().d
                    }
                }
            })
            .catch((error: Response) => {
                if (error.status === 401) {
                    return Observable.throw(new Error(error.status.toString()));
                }
                else 
                    return Observable.throw(new Error(error.status.toString()));
                }
            })
            .toPromise();

}

问题是在catch块中,响应不包含error.status,但是在map块中它会发生:

response in map block

response in catch block

我试图改变“http.request”用“http.post”替换它,但我有相同的结果 .

我该怎么做来捕获错误代码?

非常感谢!!