我在组件中提供服务。我的服务将Http Post方法发送到服务器。问题是,Http客户端将不同于20x的状态代码识别为错误,并且我正在输入catchError()方法。我想让我的组件(以及最终用户)知道请求的结果。我试图在Service中创建全局变量,并在catchError()中进行更改,但它没有用。问题仅在请求时出现。如果这两个方法都包含在组件中,那么我只需要在“用户已创建”方法的开始处修改字段,如果我进入errorHandle()方法,我会将其更改为“用户尚未创建” +原因。
组件中有方法:
sendRequest() {
const registrationForm = new RegistrationForm(this.login, this.email, this.password, this.repeatedPassword);
const response = this.registrationService.registerUser(registrationForm);
console.log(registrationForm);
response.subscribe();
}
服务中有方法:
registerUser(registrationForm: RegistrationForm): Observable<any> {
return this.http.post<String>(this.registrationUrl, registrationForm, this.httpOptions).pipe(catchError(this.handleError));
}
handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
console.error('An error occurred:', error.error.message);
} else {
console.error(`Backend returned code ${error.status}, ` +
`body was: ${error.error}`);
}
return throwError(
'Something bad happened; please try again later.');
}
我还有一个问题。如何使用Http Post处理纯文本请求返回?我的意思是,如果服务器成功时返回Json对象,或者错误时返回文本怎么办?