首页 > 解决方案 > 如何在 ngx-agora 的角度模块中动态设置 AppID 键

问题描述

我正在使用https://www.npmjs.com/package/ngx-agora进行角度 8 的视频通话。根据文档,我需要提供 APPID 静态如下

const agoraConfig: AgoraConfig = {
  AppID: '1239021930912039-02193',
};

 imports: [
    BrowserModule,
    NgxAgoraModule.forRoot(agoraConfig)
  ],

但我想根据环境从 API 响应中设置 AppId 值。如何使用 APP_INITIALIZER 的 angular 设置它?还是有其他方法可以设置它?

标签: angularvideo-streamingwebrtcagora.io

解决方案


您可以使用以下方法实现此目的APP_INITIALIZER

  1. 创建一个服务来从 API 中检索配置,我们称之为AppConfigService
@Injectable()
export class AppConfigService {
  private appConfig;

  constructor(private http: HttpClient) { }

  loadAppConfig() {
    return this.http.get('http://url-to-config-from-environment.ts')
      .toPromise()
      .then(data => {
        this.appConfig = data;
      });
  }

  getConfig() {
    return this.appConfig;
  }
}

^ 在此服务中,您需要实现实际代码以根据环境检索配置。这是一个例子

  1. 在 AppModule 中注入服务:
@NgModule({
  ...
  providers: [
    AppConfigService,
    {
      provide: APP_INITIALIZER,
      useFactory: appInitializerFn,
      multi: true,
      deps: [AppConfigService]
    }
  ],
  ...
})
export class AppModule { }
  1. 实现appInitializerFn工厂功能AppModule
...
const appInitializerFn = (appConfig: AppConfigService) => {
  return () => {
    return appConfig.loadAppConfig();
  };
};

@NgModule({

您可以参考这篇文章了解更多详情。


推荐阅读