Angular 7 HttpInterceptor在库项目中不起作用

时间:2019-01-02 08:35:25

标签: angular shared-libraries angular7

当前设置 我正在使用具有以下结构的Angular 7.1.0-具有三个库项目的根或父应用程序,如下所示:

app (root)
 |- corelib (project)
 |- lib1 (project)
 |- lib2 (project)

  • app所示,它是带有库项目coreliblib1lib2的根角项目。
  • corelib项目包含所有通用代码,并作为对lib1和lib2项目的依赖关系而包含。
  • app拥有自己的路由模块,可以在lib1和lib2项目中加载组件。
  • 请注意,corelib项目不包含任何路由。但是,它确实包含HttpInterceptor服务。
  • lib1项目当前不需要任何路由,并且主要用作仪表板。它使用corelib作为依赖项。
  • lib2项目(使用corelib作为依赖项)需要路由,并通过loadChildren()延迟加载路由,如下所示(摘自app-routing.module.ts)。

const routes: Routes = [
    { path: '', redirectTo: 'some/path1', pathMatch: 'full' },
    { path: 'some/path1', component: Lib1FirstComponent },
    { path: 'some/path1/path2', loadChildren: () => Lib2Module }
];

当我运行项目时,默认的app.component在启动过程中会加载-加载Lib1FirstComponent-它会进行http调用以显示一些JSON数据。它工作正常-它在HttpInterceptor中调用corelib服务,并初始化标题,参数等,并成功完成了请求。

问题: 我的问题是与lib2项目有关,该项目确实加载了默认组件,并且还在ngOnInit()方法中发出了http请求-但是它似乎根本无法访问我的HttpInterceptor服务-我无法调试我在HttpInterceptor中为该项目提供的corelib服务。但是,似乎标题和参数已正确发送,并且我可以通过console.log查看路径,参数和输出,并发现服务调用已成功完成。我正在尝试实现一个通用的叠加服务,以显示消息加载中……在加载我的http调用时。 我不明白为什么无法在lib2项目中通过调试模式访问HttpInterceptor服务。 您能告诉我我在这里想念的吗? 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

更新: 我通过将HttpInterceptor项目中的corelib服务移到根app项目中来解决了这个问题。