我已经在AppModule中导入了HttpClientModule。
import { HttpClientModule } from '@angular/common/http';
export const AppRoutes: Routes = [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{
path: 'account',
loadChildren: './auth/auth.module#AuthModule'
},
{
path: 'dashboard',
loadChildren: './content/content.module#ContentModule'
}
];
一旦我启动站点,它将重定向到我添加了HTTP拦截器的仪表板模块(延迟加载的模块)。
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HttpInterceptorService } from '../services/http-interceptor.service';
@NgModule({
providers : [
{ provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true }
]
})
但是它不起作用。谁能帮我吗?
答案 0 :(得分:0)
Http拦截器只是一项服务,将其注入到任何模块上都没有任何区别-只需在AppModule
中进行同样的操作即可帮助您工作-如果遇到相同的问题,您可以尝试像下面那样在共享模块上注入
要实现的常见模式不是直接在@NgModule
声明中公开提供程序,而是在诸如此类的静态forRoot函数中公开该提供程序:
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true }
]
};
}
}
然后您可以像SharedModule
一样在AppModule
上导入SharedModule.forRoot()
希望这行得通-编码愉快