我在我的项目中使用了一个核心模块来处理多个应用。每个应用程序都应该有一个不同的api url。核心模块导入包括许多外部库,其中许多需要配置对象才能导入它们。例如,ngx-jsonapi需要一个基本api url,因此,如何通过我的核心模块配置对象将每个应用程序的api url更改为外部模块。
我的例子中没有显示2点(尽可能简化问题),但确实需要知道:
其中一个应用主要模块:
import {NgModule} from '@angular/core';
import {CoreModule} from '@app-common/core';
import {AppComponent} from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [
CoreModule.forRoot({
url: 'API-URL' <= Api url should to pass here.
})
],
bootstrap: [AppComponent]
})
export class AppModule {
}
以下是常见的核心模块:
import {NgxJsonapiModule} from 'ngx-jsonapi';
import {throwIfAlreadyLoaded} from '@app-common/core/module-import-guards';
@NgModule({
imports: [
NgxJsonapiModule.forRoot({
url: 'API-URL' <= Api url should used from the config object that pass into the forRoot method of the core module.
})
]
})
export class CoreModule {
static forRoot(config: {url: string}): ModuleWithProviders {
return {
ngModule: ProteanCoreModule,
providers: []
};
}
constructor(@Optional() @SkipSelf() parentModule: CoreModule, router: Router) {
throwIfAlreadyLoaded(parentModule, 'CoreModule');
}
}
答案 0 :(得分:0)
如果您想在应用程序范围内共享数据,那么我建议创建一个在Core模块中注册的服务(由App Module导入)或在AppModule本身注册。在根作用域注册的服务以单例形式提供,可以在任何地方注入 - 甚至可以从延迟加载的模块中注入。
或者,如果您尝试设置特定于环境的配置数据,那么我建议使用类似.env
的库。此库允许您从映射到的.env
设置配置变量process.env
并且可以在构建时替换。