Angular 2 4 HttpClient。POST请求-如何获取状态码

use*_*867 5 angular angular-httpclient

如何获取响应POST请求的状态码?我的服务方法返回:

return this.httpClient.post(url, body, {observe: 'response'})
            .catch(HandleError.handleErrorClient);
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我调用此方法并订阅:

    .subscribe(
        res => {
            console.log(res);
            console.log(JSON.stringify(res));
            this.responseStatus = res.status;
            console.log(this.responseStatus);
        },
        err => {
            this.responseStatus = err.status;
        });
Run Code Online (Sandbox Code Playgroud)

但是在浏览器控制台中没有任何内容-但是,当请求包含错误时,则this.responseStatus = err.status返回正确的状态代码,但是res.status或者res不包含状态代码,则仅返回响应主体。

编辑:

零件:

responseStatus: number;

loginUser() {
    this.loginData = this.loginForm.getRawValue();
    this.userLoginService.loginUser(this.loginData)
        .subscribe(
            res => {
                console.log('bla bla');
                this.responseStatus = res.status;
            },
            err => {
                console.log(err.status); //401
                console.log(err.error.error); //undefined
                console.log(JSON.parse(err.error).error); //unauthorized
                this.responseStatus = err.status;
            });
}
Run Code Online (Sandbox Code Playgroud)

服务:

import {Http} from "@angular/http";
import {HttpClient} from '@angular/common/http';

...

    constructor(private http: Http, private httpClient: HttpClient) {
    }


    loginUser(loginData: LoginForm) {
        return this.httpClient.post(this.loginURL, loginData, {observe: 'response'})
            .catch(HandleError.handleError);
    }
Run Code Online (Sandbox Code Playgroud)

处理错误

export class HandleError {

    static handleError(error: Response | any) {
        let errMsg: string;
        if (error instanceof Response) {
            const body = error.json() || '';
            const err = body.error || JSON.stringify(body);
            errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
        } else {
            errMsg = error.message ? error.message : error.toString();
        }
        console.error(errMsg);
        return Observable.throw(error);
    }
}
Run Code Online (Sandbox Code Playgroud)

POST:/ api / login 在此处输入图片说明 我已正确登录,但仅此而已...我希望在浏览器控制台中:console.log('bla bla');。随着Http不存在问题。