错误处理在 angular 6 中不起作用

Error handling not working in angular 6

我是 Angular 的新手,使用此解决方案根据我的模型生成实体和服务。

其中一个生成的方法正在执行 post 请求以记录我的用户并且请求已发送。

但是当我从我的 API 中收到类似 Bad credentials 的错误时,该错误未得到处理并且我在我的 angular 应用程序上收到运行时错误,并且控制台显示像这样的错误:

Http failure response for http://my-api.com/api/user/login: ErrorCode

这是我的代码:

/**
     * Log a user by its credentials.
     */
    login(username : string, password : string) : Observable<NmUser> {
        let body = JSON.stringify({
            'username': username,
            'password': password
        });
        console.log(body);
        return this.http.post(this.userUrl + 'login', body, httpOptions)
            .pipe(
                map(response => new NmUser(response)),
                catchError(this.handleError)
            );
    }

// sample method from angular doc
    private handleError (error: HttpErrorResponse) {
        // TODO: seems we cannot use messageService from here...
        let errMsg = (error.message) ? error.message : 'Server error';
        console.error(errMsg);
        if (error.status === 401 ) {
            window.location.href = '/';
        }
        return Observable.throw(errMsg);
    }

我做错了什么?欢迎任何帮助。

谢谢!

errorHandler() 方法正在抛出从后端检索到的错误。

这一行

return Observable.throw(errMsg);

我猜你在 Observable 订阅中没有正确处理它。这就是它显示在浏览器控制台上的原因

您可以这样处理组件中的错误:

this.service.login(username, password)
    .subscribe(data => {},
               error => {                     
                   // redirect to some error component
         })

在您的代码中的某个时刻,您必须停止 Observable.throw 链,否则它会显示在控制台中。