【问题标题】:Angular 7 HttpInterceptor not working from library projectAngular 7 HttpInterceptor 在库项目中不起作用
【发布时间】:2019-01-02 08:35:25
【问题描述】:

当前设置 我正在使用具有以下结构的 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 数据。它工作正常 - 它调用corelib中的HttpInterceptor服务并初始化标头、参数等,并成功完成请求。

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

【问题讨论】:

    标签: angular shared-libraries angular7


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      相关资源
      最近更新 更多