error-handling shows how to handle errors as follows:
private handleError (error: Response | any) {
// In a real world app, we might use a remote logging infra
//First inject the router in the constructor
private handleError (error: Response | any) {
//Your other codes
if (error.status == 0){ //or whatever condition you like to put
this.router.navigate(['/error']);
}
}
It's impossible distinguish both ERR_CONNECTION_TIMED_OUT (the one someone had mentioned above) and ERR_CONNECTION_REFUSED, because HttpErrorResponse class doesn't differentiate them. So you have to use status 0 to handle all the generic errors. According to list of HTTP status codes https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
If you receive a response that is not in this list, it is a non-standard response, possibly custom to the server's software.
It means 0 is a non-standard response.
Angular is a Javascript Framework; hence you should refer to XMLHttpRequest status codes to find out what 0 means. The Mozilla page says..
Before the request completes, the value of status is 0. Browsers also report a status of 0 in case of XMLHttpRequest errors.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/status
So, ERR_CONNECTION_REFUSED means the connection is not established (request is not completed), and therefore, the status code is 0. In that case it's safe to say "Unable to Connect to the Server". throwError is a RxJs function that emit error message, which you can read through Subscribe() method.
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req).pipe(
catchError((errorResponse: HttpErrorResponse) => {
if (errorObj instanceof HttpErrorResponse) {
if (errorObj.status === 0) {
return throwError('Unable to Connect to the Server');
}
}
})
);
}
This happens when you try to reach an insecure https site.
A solution is : first connect to the insecure site with your browser, a warning page will display. Click on "advance parameter" and accept this site as secure. Second you can reach this destination with your Angular code.
Hope this helps.