configuration - 在应用模块导入模块之前加载配置文件
问题描述
我试图在我的应用程序模块导入其模块之前加载配置文件,因此我可以在应用程序模块导入模块时使用配置文件。
现在配置文件的加载发生在 app 模块的 providers 部分,该部分在 imports 部分之后加载。
这是我的代码:
import {BrowserModule} from '@angular/platform-browser';
import {APP_INITIALIZER, NgModule} from '@angular/core';
import {AppComponent} from './app.component';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {Routes, Router, RouterModule} from '@angular/router';
import {MatGridListModule, MatCardModule, MatMenuModule, MatIconModule, MatButtonModule} from '@angular/material';
import {LayoutModule} from '@angular/cdk/layout';
import {
IMqttMessage,
MqttModule,
IMqttServiceOptions
} from 'ngx-mqtt';
import {DatePipe} from '@angular/common';
import {AppConfigService} from './shared/services/app-config.service';
import {IAppConfig} from '../assets/config/app-config.module';
import {HttpClientModule} from '@angular/common/http';
import * as path from 'path';
import {hostname} from 'os';
export function initializeApp(appConfig: AppConfigService) {
console.log('init');
return () => appConfig.load();
}
export function MqttServiceOptionsConf(): IMqttServiceOptions {
console.log('init2');
const appConfiguration = AppConfigService.settings;
const mqttopt: IMqttServiceOptions = {hostname: appConfiguration.MqttProps['HostName'], port: appConfiguration.MqttProps['Port'], path: '/mqtt'};
return mqttopt;
}
const routes: Routes = [
{path: 'contactmanager', loadChildren: './contactmanager/contactmanager.module#ContactmanagerModule'},
{path: 'demo', loadChildren: './demo/demo.module#DemoModule'},
{path: '**', redirectTo: 'contactmanager'}
];
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
HttpClientModule,
MqttModule.forRoot(MqttServiceOptionsConf()),
BrowserAnimationsModule,
RouterModule.forRoot(routes),
MatGridListModule,
MatCardModule,
MatMenuModule,
MatIconModule,
MatButtonModule,
LayoutModule,
],
providers: [DatePipe,
AppConfigService,
{
provide: APP_INITIALIZER,
useFactory: initializeApp,
deps: [AppConfigService], multi: true
},
],
bootstrap: [AppComponent]
})
export class AppModule {
}
相关部分在函数 initializeApp、MqttServiceOptionsConf 和 imports 中,当我尝试加载 MqttModule 时,以及在我加载配置文件时在提供程序中。
任何想法我该如何解决这个问题?
解决方案
推荐阅读
- php - 将属性添加到 SoapVar
- python - Matplotlib:如何以全分辨率保存图像?
- node.js - NodeJS 在特定日期执行任务,该日期与时区一起存储在 mongodb 中
- azure - 我可以使用 Azure Devops REST API 6.0 自动激活持续部署触发器以激活发布定义吗?
- c++ - C++如何重定位外部符号地址
- python - linux中的pythonnet无法导入ssl
- javascript - 如何将副本与括号 Javascript 匹配
- adb - 启用安全 ADB 模式
- python-3.x - python3在文件结束后重置标准输入
- flutter - 在android上重新启动应用程序后显示Flutter hive数据