将注入令牌传递到库中定义的服务中,在 angular 应用程序中使用
Transitively inject injection token into a service defined in library, used within an angular application
我创建了一个 angular 库,比如说 library1
,它定义并公开了一个服务 APIService
。 APIService
有一个构造函数参数 (URL: string
),它被注入一个定义为
的注入标记
const URL_TOKEN = new InjectionToken<string>('API_BASE_URL');
我在另一个库中使用这个 library1
,比如 library2
,即我在名为 LoginComponent
.
的组件中注入 APIService
现在我有一个成熟的 angular 应用程序,我使用 library2 中的 LoginComponent,我希望 provide
来自应用程序的 URL
的值。
不知是否有办法实现。我也不确定如何以一种很好的方式将 URL_TOKEN
从 library1
一直暴露到 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 文档等)之后,这似乎是正确的方法。
我创建了一个 angular 库,比如说 library1
,它定义并公开了一个服务 APIService
。 APIService
有一个构造函数参数 (URL: string
),它被注入一个定义为
const URL_TOKEN = new InjectionToken<string>('API_BASE_URL');
我在另一个库中使用这个 library1
,比如 library2
,即我在名为 LoginComponent
.
APIService
现在我有一个成熟的 angular 应用程序,我使用 library2 中的 LoginComponent,我希望 provide
来自应用程序的 URL
的值。
不知是否有办法实现。我也不确定如何以一种很好的方式将 URL_TOKEN
从 library1
一直暴露到 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 文档等)之后,这似乎是正确的方法。