Handling 401s globally with Angular

后端 未结 8 964
误落风尘
误落风尘 2020-11-28 18:50

In my Angular 2 project I make API calls from services that return an Observable. The calling code then subscribes to this observable. For example:

getCampai         


        
8条回答
  •  醉梦人生
    2020-11-28 19:31

    Angular >4.3: ErrorHandler for the base service

    protected handleError(err: HttpErrorResponse | any) {
        console.log('Error global service');
        console.log(err);
        let errorMessage: string = '';
    
        if (err.hasOwnProperty('status')) { // if error has status
            if (environment.httpErrors.hasOwnProperty(err.status)) {
                // predefined errors
                errorMessage = environment.httpErrors[err.status].msg; 
            } else {
                errorMessage = `Error status: ${err.status}`;
                if (err.hasOwnProperty('message')) {
                    errorMessage += err.message;
                }
            }
         }
    
        if (errorMessage === '') {
            if (err.hasOwnProperty('error') && err.error.hasOwnProperty('message')) { 
                // if error has status
                errorMessage = `Error: ${err.error.message}`;
            }
         }
    
        // no errors, then is connection error
        if (errorMessage === '') errorMessage = environment.httpErrors[0].msg; 
    
        // this.snackBar.open(errorMessage, 'Close', { duration: 5000 }});
        console.error(errorMessage);
        return Observable.throw(errorMessage);
    }
    

提交回复
热议问题