我的目标
一个封装的应用程序(表单编辑器),我可以在另一个angular应用程序中使用它,也可以在任何网络应用程序中使用。
想法
主要模块/组件可以作为angular库实现(主要组件作为阴影DOM),因此我可以添加'angular elements'包装器来构建webcomponent,但也可以将库本身作为npm包导入到我的现有angular应用程序中。因此,我的angular应用程序不会加载完整的JavaScript包,而只加载未提供但其他应用程序的模块,以获得更好的性能和集成。
问题
对于库的每个请求,我希望有一个http拦截器来登录/将jwt令牌添加到请求头。当我使用angular elements包装器构建应用程序时(除了导入库并构建webcomponent之外什么也不做),一切正常。当我将其添加到angular应用程序中时,拦截器不能按预期工作,因为其他应用程序也有拦截器。我想将库的拦截器封装到库中。因此,我认为我只需要再次在库中导入HttpClientModule,并获取自己的实例,这样同一文件中定义的HTTP_INTERCEPTORS提供程序就知道何时触发。不幸的是,这个想法行不通,两者都会干扰。
AppModule
- 导入:
- HttpClientModule(1)
- CustomLibraryModule
- 提供程序:
- HTTP_INTERCEPTORS(1)
CustomLibraryModule
- 导入:
- HttpClientModule(2)
- 提供程序:
- HTTP_INTERCEPTORS(2)
在最好的情况下,我希望将CustomLibraryModule导入到我的应用程序的惰性加载的子模块中。
问题
我选对了这种情况的工具吗?您知道我做错了什么来获取封装的http拦截器吗?