angular - 如何在 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 设置它?还是有其他方法可以设置它?
解决方案
您可以使用以下方法实现此目的APP_INITIALIZER
:
- 创建一个服务来从 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;
}
}
^ 在此服务中,您需要实现实际代码以根据环境检索配置。这是一个例子。
- 在 AppModule 中注入服务:
@NgModule({
...
providers: [
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: appInitializerFn,
multi: true,
deps: [AppConfigService]
}
],
...
})
export class AppModule { }
- 实现
appInitializerFn
工厂功能AppModule
:
...
const appInitializerFn = (appConfig: AppConfigService) => {
return () => {
return appConfig.loadAppConfig();
};
};
@NgModule({
您可以参考这篇文章了解更多详情。
推荐阅读
- python - Python多处理池;等待迭代完成
- c# - 在 Unity 中重新启动/暂停/恢复 ARCore 会话
- javascript - 当有人使用 javascript 或 jquery 粘贴文本时,如何仅在输入字段内的文本开头禁用/删除空格?
- python - 如何在python中加载多个json对象
- javascript - Javascript 承诺无法捕获超时或 500 服务器错误
- javascript - 多个套接字客户端
- c# - 应用程序不会从笔记本电脑部署
- python - 如何确定已安装 conda 包的确切软件版本?
- python-3.x - Python 请求 utf-8 后响应得到一个 ascii 解码错误
- kotlin - 如何为 boolean.class/Boolean::class.javaPrimitiveType 和 Boolean.class/Boolean.class.java 注册类型适配器