我目前正在将我的角度应用切换为通用ssr应用。 我的最后一个问题是我的自定义HttpInterceptor触发两次。我正在检查我的api调用的http响应代码,如果出现错误,则会显示弹出窗口。由于我切换到通用,因此两次出现相同的错误弹出窗口。
@Injectable()
export class HttpSetHeaders implements HttpInterceptor {
constructor(
@Inject(PLATFORM_ID) private platformId,
@Inject(LOCAL_STORAGE) private localStorage: any,
private authService: AuthService,
private router: Router,
private notifierService: NotifierService
) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(isPlatformServer(this.platformId))
......
}
在每次HTTPClient调用之后,我看到控制台日志输出两次。
我已经在我的app.module中导入了TransferHttpCacheModule 和我的app.server.module中的TransferHttpCacheModule
谢谢 马库斯
答案 0 :(得分:3)
根据https://angular.io/api/common/http/HttpInterceptor
要为整个应用程序使用相同的HttpInterceptors实例,请仅在您的AppModule中导入HttpClientModule,然后将拦截器添加到根应用程序注入器中。如果跨不同模块(例如,在延迟加载模块中)多次导入HttpClientModule,则每次导入都会创建HttpClientModule的新副本,该副本将覆盖根模块中提供的拦截器。
让我知道这是否可以解决您的问题。可能是您多次实例化HttpInterceptor。