angular - Angular - 仅在延迟加载的模块上添加身份验证拦截器
问题描述
我有 3 个模块。应用程序、报告和连接。
要访问报告模块,您需要有一个 jwt,所以我有一个身份验证拦截器来处理这个问题。目前拦截器是在我的app.module.ts中定义的,但我只希望在我的延迟加载的reports.module.ts中使用 auth 拦截器
当前设置。
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';
import { CoreModule } from './core/core.module';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { AuthInterceptor } from './core/interceptors/auth.interceptor';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
HttpClientModule,
SharedModule,
CoreModule.forRoot(),
],
providers: [{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
],
bootstrap: [AppComponent]
})
export class AppModule { }
新设置
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';
import { CoreModule } from './core/core.module';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
HttpClientModule,
SharedModule,
CoreModule.forRoot(),
],
bootstrap: [AppComponent]
})
export class AppModule { }
报告.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { UpperCasePipe } from '@angular/common';
import { DatePipe } from '@angular/common';
import { TitleCasePipe } from '@angular/common';
import { ReportsRoutingModule } from './reports-routing.module';
import { ReportsComponent } from './reports.component';
import { SharedModule } from './../shared/shared.module';
...
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { AuthInterceptor } from './../core/interceptors/auth.interceptor';
@NgModule({
imports: [
CommonModule,
SharedModule,
ReportsRoutingModule,
HttpClientModule,
],
declarations: [
...
],
entryComponents: [
...,
],
providers: [DatePipe, UpperCasePipe, TitleCasePipe, { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }],
})
export class ReportsModule { }
但是,新设置不起作用,并且身份验证拦截器永远不会被触发。(我什至尝试从报告中注释掉 HTTPClientModule 导入)。
解决方案
推荐阅读
- apache-kafka - 卡夫卡流抑制在窗口化后不产生输出
- android - 应用程序字体大小不会改变
- javascript - 使用Javascript从两个对象数组中删除重复项
- python - 如何在 Python 中使用整数变量重命名文本文件?
- python - 'pytype' 为使用 TypeVar 的函数引发 FAILED
- c# - 为 Nullable 显示 CheckBox 列
DataGridView 中的属性 - java - 使用 Enum 的 Spring 请求 notempty 验证
- android - 如何从字符串变量中的 Firebase 数据库访问此嵌套值?
- javascript - 在 webpack 中操作(第一个)块的名称?
- python - 如何在 python 中使用 request.post() 方法处理异常