猿问

Angular 使用全局拦截器

我想全局使用 2 个拦截器(httpInterceptorProviders,jwtInterceptorProviders),但它在我的惰性模块中不起作用。我有 CoreModule 和 X 延迟加载模块。奇怪的是,我有一个由 swagger generator(http services) 自动生成的代码,这个调用被拦截了,但是当我使用自定义 http 服务拦截器时,它没有拦截这个请求。


Index.ts 我在哪里得到提供者


/** Http interceptor providers in outside-in order */

export const httpInterceptorProviders = [

    { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true }

];


export const jwtInterceptorProviders = [

    { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }

];

CoreModule,我在提供者中导入我的拦截器


@NgModule({

  imports: [

    // angular

    CommonModule,

    HttpClientModule,

    // ngrx

    StoreModule.forRoot(reducers, { metaReducers }),

    StoreRouterConnectingModule.forRoot(),

    EffectsModule.forRoot([AuthEffects, GoogleAnalyticsEffects]),

    environment.production

      ? []

      : StoreDevtoolsModule.instrument({

          name: "Angular NgRx Material Starter"

        }),


    // 3rd party

    TranslateModule.forRoot({

      loader: {

        provide: TranslateLoader,

        useFactory: HttpLoaderFactory,

        deps: [HttpClient]

      }

    }),

    ApiModule.forRoot(() => {

      return new Configuration({

        basePath: `${environment.HOST}:${environment.PORT}`,

        apiKeys: { Authorization: "" }

      });

    })

  ],

  declarations: [],

  providers: [

    LocalStorageService,

    AuthGuardService,

    AnimationsService,

    TitleService,


    // retryHttpInterceptorProviders,

    { provide: ErrorHandler, useClass: AppErrorHandler },

    httpInterceptorProviders,

    jwtInterceptorProviders,

    { provide: RouterStateSerializer, useClass: CustomSerializer },

    {

      provide: HAMMER_LOADER,

      useValue: () => new Promise(() => {})

    },

    AnalyticsService,

    LayoutService,

    StateService,

    PetsServiceWithUpload

  ],

  exports: [TranslateModule]

})


繁花如伊
浏览 184回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答