【问题标题】:Set Global Variables in Angular 6 as per the API output根据 API 输出在 Angular 6 中设置全局变量
【发布时间】:2019-12-16 20:10:07
【问题描述】:

基本上,我需要 environment.ts 文件来一次性调用外部 API,然后我想在我的 global.ts 文件中设置该变量,然后我将在全局的各种组件中使用它。 我可以通过在 environment.ts 中添加静态值来实现它而无需 API 调用。我需要根据 API 使其动态化。

例如,我有 environment.ts 作为,

export const environment = {
  defaultCountry: 'US',
};

然后我在 global.ts 中使用这个,

defaultCountry: environment.defaultCountry,

我想根据 API 使这个 defaultCountry 动态化,例如,

export const environment = {
      defaultCountry: this.api.subscribe() == true? 'US': 'CA',
    };

如果这种方法不正确,您能否建议我如何实现它,因为我无法从 environment.ts 文件调用 API。 提前谢谢你。

编辑:另外,这应该在应用程序启动时设置,如果 API 失败,它不应该抛出任何异步错误。

【问题讨论】:

标签: angular api angular6


【解决方案1】:

通过使用 APP_INITIALIZER ,我能够解决我的问题...

1.在app.module.ts中添加如下代码:

{
      provide: APP_INITIALIZER,
      useFactory: (configService: ConfiguartionService) =>
        () => configService.loadConfigurationData(),
      deps: [ConfiguartionService],
      multi: true
    }

2.创建了ConfigurationService,它将调用API并获取数据,

loadConfigurationData(): Promise<any> {
    return this.http.get<any>("your api").toPromise().then((result) => {
      this.configData = result.data;
    })
  }

3.获取任何组件中的配置数据变量,

this.config = this.configService.config;

参考:stackoverflow hackernoon

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多