Я создаю веб-сайт Angular, который общается с кучей API, и я следую Angular docs , чтобы попробовать и использовать лучшие практики для выдачи HTTP-запросов и последующей успешной и неудачной обработки.
Я жестко запрограммировал один из моих API для возврата ошибки 500
, и я могу успешно обработать это 500
в приложении Angular, используя определение catchError
в pipe
послеВызов службы HTTP, код выглядит следующим образом:
updateRemoteUserProfile(userProfile: UserProfile): Observable<UserProfile>{
return this.http.put<UserProfile>(AuthService.userProfileApi, userProfile).pipe(
catchError(this.handleError<UserProfile>('updateUserProfile', 'Error', 'Error updating profile', userProfile))
);
}
private handleError<T> (operation = 'operation', title, notification, result?: T) {
return (error: any): Observable<T> => {
this.toastrService.error(notification, title);
console.error(error);
return of(result as T);
};
}
Проблема, с которой я сталкиваюсь, заключается в том, что когда я вызываю updateRemoteUserProfileMethod
, используя следующий код, метод подписки всегда выполняется, и всплывающее сообщение об успехе всплываетодновременно с ошибкой:
updateUserProfile(forename: string, surname: string){
let userProfile: UserProfile = { forename: forename, surname: surname}
this.updateRemoteUserProfile(userProfile).subscribe(() => {
this.displayName = forename + ' ' + surname;
this.displayNameChange.next(this.displayName);
this.toastrService.success('Profile updated successfully', 'Success');
});
}
Я уверен, что упускаю что-то довольно простое и фундаментальное, но все это основано на документах Angular, так что я сейчас в растерянности.
Большое спасибо