簡體   English   中英

Angular 4/5-通過動態配置實例化服務

[英]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.clientIdwindow.applicationNamespaceAuthService

(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM