基本的 HttpInterceptor 从未达到
basic HttpInterceptor never reached
我想实现一个 HttpInterceptor 来处理 404 错误。现在我只想在到达 HttpInterceptor 时在控制台中记录一些内容。
我实现了一个基本的 doNothing HttpInterceptor 但没有任何效果。
app.module.ts
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { ErrorHandlerInterceptor } from './blocks/interceptor/errorhandler.interceptor';
@NgModule({
imports: [
...
HttpClientModule
declarations: [...],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: ErrorHandlerInterceptor,
multi: true
}
],
bootstrap: [MainComponent]
})
errorhandler.interceptor.ts
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class ErrorHandlerInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('Hello');
return next.handle(request);
}
}
如果您想查看完整代码,可以查看我的github
如果我没理解错的话,每次到达拦截器时控制台应该显示'Hello'。但是当我尝试达到一个不存在的 url 时,控制台不显示 'Hello',只是我想要处理的错误...
感谢您的帮助
拦截器用于处理传出请求。假设您使用 HttpClient
发出 get
请求。然后它将通过拦截器。尝试导航到不存在的路由不会被拦截器捕获。
我想实现一个 HttpInterceptor 来处理 404 错误。现在我只想在到达 HttpInterceptor 时在控制台中记录一些内容。
我实现了一个基本的 doNothing HttpInterceptor 但没有任何效果。
app.module.ts
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { ErrorHandlerInterceptor } from './blocks/interceptor/errorhandler.interceptor';
@NgModule({
imports: [
...
HttpClientModule
declarations: [...],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: ErrorHandlerInterceptor,
multi: true
}
],
bootstrap: [MainComponent]
})
errorhandler.interceptor.ts
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class ErrorHandlerInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('Hello');
return next.handle(request);
}
}
如果您想查看完整代码,可以查看我的github
如果我没理解错的话,每次到达拦截器时控制台应该显示'Hello'。但是当我尝试达到一个不存在的 url 时,控制台不显示 'Hello',只是我想要处理的错误...
感谢您的帮助
拦截器用于处理传出请求。假设您使用 HttpClient
发出 get
请求。然后它将通过拦截器。尝试导航到不存在的路由不会被拦截器捕获。