Для этого вам нужно установить опцию под названием
{observe: 'response'}
Это позволяет вам прочитать статус ответа на HTTP-вызов.
Так что http-вызов будет:
makeCall(): Observable<any> {
return this.http.get('uri', {observe: 'response'});
}
А когда вы будете подписываться, просто проверьте статус ошибки, вы можете проверить статус ошибки даже без подписки, просто сделайте это по конвейеру и используйте map или catchError и проверьте Reponse.
Вот пример того, как я реализовал это на валидации JWT:
return this.auth.validateJwt().pipe(
map( (response) => {
if (response.status === 200) {
return true;
}
}),
catchError((err: Response) => {
this.handleError('authentication');
if (err.status === 200) {
return of(true);
}
return of(false);
}),
first()
);
Я отображаю ошибку ответа, чтобы увидеть, равен ли код 200, отображение ответа означает, что сервер вернет что-то, помните, что мы получим полный ответ, поэтому ответ будет состоять из заголовка, ответа тела, где тело является данные. Но если сервер отключен или я ввожу неверный URL в коде, я улавливаю ошибку, потому что у меня все еще есть ответ, даже без тела.
угловые документы: https://angular.io/guide/http#reading-the-full-response