2017-08-09 124 views
0

我想实现一个HttpInterceptor,但不知何故,它根本没有做任何事情。Angular HttpInterceptor不起作用

定制业务实现HttpInterceptor

import {Injectable} from '@angular/core'; 
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse} from '@angular/common/http'; 
import {AuthenticationService} from "./authentication.service"; 
import {Observable} from "rxjs/Observable"; 

@Injectable() 
export class HttpInterceptorService implements HttpInterceptor { 

    constructor(private auth: AuthenticationService) { 
    } 

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
    console.log("INTERCEPTED!!"); 

    const authHeader = this.auth.getAuthorizationHeader(); 

    const authReq = req.clone({setHeaders: {Authorization: authHeader}}); 

    return next.handle(authReq) 
     .do((event) => { 
     if (event instanceof HttpResponse) { 
      console.log(event); 
     } 
     }, (error: HttpErrorResponse) => { 
     console.log(error); 
     }); 
    } 
} 

提供了app.modules.ts

providers: [ 
    { 
     provide: HTTP_INTERCEPTORS, 
     useClass: HttpInterceptorService, 
     multi: true, 
    }, 
    AuthenticationService 
    ] 

不幸的是,它似乎是无所事事。我错过了什么吗?

回答

0

好的,我发现了。要执行get()呼叫,我仍然使用的Http而不是HttpClient@angular/common/http

现在它工作正常。