Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度4/5-使用动态配置实例化服务_Javascript_Angular_Typescript_Authentication_Angular Services - Fatal编程技术网

Javascript 角度4/5-使用动态配置实例化服务

Javascript 角度4/5-使用动态配置实例化服务,javascript,angular,typescript,authentication,angular-services,Javascript,Angular,Typescript,Authentication,Angular Services,我目前正在编写一个库,它公开了一个AuthModule,其中包含一个AuthService,用于使用oidc客户端js处理OAuth2身份验证。但是,我希望使用应用程序为OAuth客户机指定配置。我知道我可以将配置传递到AuthModule的forRoot方法中,如下所示: AuthModule.forRoot({ applicationNamespace: 'ConsumingApp', clientId: 'consuming.app' }); export const A

我目前正在编写一个库,它公开了一个
AuthModule
,其中包含一个
AuthService
,用于使用
oidc客户端js
处理OAuth2身份验证。但是,我希望使用应用程序为OAuth客户机指定配置。我知道我可以将配置传递到
AuthModule
forRoot
方法中,如下所示:

AuthModule.forRoot({
    applicationNamespace: 'ConsumingApp',
    clientId: 'consuming.app'
});
export const AUTH_CONFIG = new InjectionToken<AuthConfig>('authConfig');
forRoot
方法中,我想提供一个带有传入配置的服务实例

我通过在
窗口
对象上设置传入的属性,成功地破解了它。然后在
AuthService
中使用对
window.clientId
window.applicationNamespace
的引用

(window as any).applicationNamespace = authConfig.applicationNamespace;
(window as any).clientId = authConfig.clientId;

有没有更好的方法来实现这一点?

这可以通过以下方式使用注入令牌来实现

步骤1:为传入的配置对象创建一个
InjectionToken
,如下所示:

AuthModule.forRoot({
    applicationNamespace: 'ConsumingApp',
    clientId: 'consuming.app'
});
export const AUTH_CONFIG = new InjectionToken<AuthConfig>('authConfig');
步骤4:使用传入的配置作为注入令牌的值

{ provide: AUTH_CONFIG, useValue: authConfig }

真正地没有人?