将注入令牌传递到库中定义的服务中,在 angular 应用程序中使用

Transitively inject injection token into a service defined in library, used within an angular application

我创建了一个 angular 库,比如说 library1,它定义并公开了一个服务 APIServiceAPIService 有一个构造函数参数 (URL: string),它被注入一个定义为

的注入标记

const URL_TOKEN = new InjectionToken<string>('API_BASE_URL');

我在另一个库中使用这个 library1,比如 library2,即我在名为 LoginComponent.

的组件中注入 APIService

现在我有一个成熟的 angular 应用程序,我使用 library2 中的 LoginComponent,我希望 provide 来自应用程序的 URL 的值。

不知是否有办法实现。我也不确定如何以一种很好的方式将 URL_TOKENlibrary1 一直暴露到 angular 应用程序。

更新

当我尝试将 API_BASE_URL 注入时,

providers: [ {provide: new InjectionToken<string>('API_BASE_URL'), useValue: 'http://endpoint'} ]

我在浏览器中遇到异常:ERROR NullInjectorError: StaticInjectorError(AppModule)[InjectionToken API_BASE_URL]:

最后我一路导出URL_TOKEN。在查看了大量资源(堆栈溢出问题、github 帖子、angular 文档等)之后,这似乎是正确的方法。