在拦截器中手动订阅Observable
当使用Angular的HTTP拦截器时,开发者可能会发现拦截器并未真正执行Observable。这是因为在拦截器中没有手动订阅Observable。这个问题可以通过在拦截器中手动订阅Observable来解决。下面是一个示例:
@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
intercept(req: HttpRequest, next: HttpHandler): Observable> {
const modifiedReq = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token) });
return next.handle(modifiedReq).pipe(
tap(
event => {
if (event instanceof HttpResponse) {
console.log('Success');
}
},
error => {
console.log('Error');
}
)
);
}
}
在这个示例中,我们手动订阅了Observable并在其中添加了日志记录。这样,我们就可以确保拦截器中的Observable被执行了。