[英]Angular 4/5 - Instantiate service with dynamic configuration
我目前正在編寫一個庫,該庫公開AuthModule
,其中包含一個AuthService
用於使用oidc-client-js
處理OAuth2身份驗證。 但是,我希望使用的應用程序為OAuth客戶端指定配置。 我知道可以在配置通入forRoot
所述的方法AuthModule
,像這樣:
AuthModule.forRoot({
applicationNamespace: 'ConsumingApp',
clientId: 'consuming.app'
});
在forRoot
方法中,我想提供一個帶有傳入配置的服務實例。
我已經通過僅在window
對象上設置傳入的屬性來設法破解它。 然后,我在AuthService
使用對window.clientId
和window.applicationNamespace
的AuthService
。
(window as any).applicationNamespace = authConfig.applicationNamespace;
(window as any).clientId = authConfig.clientId;
有沒有更好的方法可以做到這一點?
可以使用注入令牌以以下方式完成此操作。
步驟1:為傳入的配置對象創建InjectionToken
,如下所示:
export const AUTH_CONFIG = new InjectionToken<AuthConfig>('authConfig');
步驟2:將令牌注入AuthService
構造函數
步驟3:將配置對象傳遞給模塊的forRoot函數
public static forRoot(authConfig: AuthConfig): ModuleWithProviders
步驟4:使用傳入的配置作為注入令牌的值
{ provide: AUTH_CONFIG, useValue: authConfig }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.