Angular Service提供默认值吗?

时间:2019-07-04 07:52:30

标签: javascript angular typescript service

考虑一个包装 HTTP客户端模块的Angular服务。

export class HttpWrapperService {
  private apiKey: string;
}

显然,它具有更多不相关的功能。

现在,我需要为多个模块提供 HttpWrapperService ,这些模块具有一些唯一的默认值。此默认值应分配给私有数据成员,即private apiKey: string;


观察:

正如我所看到的其他具有默认值的导入一样,我想知道如何实现它。

RouterModule.forRoot(AppRoutes),
GravatarModule.forRoot(GRAVATAR_CONFIG_TYPE1),
AngularFireModule.initializeApp(environment.firebaseConfig),
ServiceWorkerModule.register("ngsw-worker.js", {
  enabled: environment.production
})

当前出路

当前,我正在使用静态方法来初始化静态变量。不知道这是否是解决此问题的正确方法。

export class AppModule {

  constructor(){
    HttpWrapperService.register(environment.apiKeyHeaders);
    UserService.registerEndpoint(environment.apiEndpoint);
  }
}

1 个答案:

答案 0 :(得分:1)

您可以按以下方式在AppModule中提供api键值:

@NgModule({
  providers: [
    { provide: 'API_KEY', useValue: '<apiKeyValue>' },
    HttpWrapperService
  ],
})
export class AppModule { }

可以如下注入api键值

export class HttpWrapperService {
    constructor(@Inject('API_KEY') private apiKey: string) {}
}