如何解决了解 Angular 库、模块和子模块
我根据 Fabian Gosebrink 的 on this article 提出了三个问题,他对我对库配置的理解非常有帮助。在我的示例中,我设法将 ConfigurationStore 和 ConfigFromApp 存储在配置库中。我很感激我可能对库与模块的工作方式有误解。
假设我有一个库,其中的配置可与其他库一起使用,我可以将它们导入到我的应用程序中(我已验证它确实有效):
import { APP_INITIALIZER,NgModule } from '@angular/core';
import { browserModule } from '@angular/platform-browser';
import { AppConfigService,ConfigFromApp,LibToConfigureModule,LibConfigurationProvider } from '@main/config';
import { ApiModule } from '@main/api';
import { AppComponent } from './app.component';
export const initAppWithHttp = (appConfig: AppConfigService) => (): Promise<any> => appConfig.loadConfigFile('/config/configuration.json')
.then(response => console.log('hello',response));
@NgModule({
declarations: [AppComponent],imports: [
browserModule,HttpClientModule,LibToConfigureModule.forRoot({
config: {
provide: LibConfigurationProvider,useClass: ConfigFromApp,},}),ApiModule
],providers: [
{
provide: APP_INITIALIZER,useFactory: initAppWithHttp,multi: true,deps: [AppConfigService]
}
],bootstrap: [AppComponent]
})
现在的目标是在我的@main 组中拥有一个公共库或模块,其中包含我希望在大多数(如果不是全部)常规项目中使用的库和模块,包括您在上面看到的配置和 api 库。
第一个问题,如果这些是单独的模块,它们是否仍然可以被发布和访问:
import { AppConfigService,LibConfigurationProvider } from '@main/common/config';
import { ApiModule } from '@main/common/api';
...
@NgModule({
declarations: [AppComponent],...
我的第二个问题。假设我真的想要一个通用模块,它仍然使用上面概述的 config 模块。最终结果如下:
import { CommonModule,ApiModule } from '@main/common';
import { AppConfigService,LibConfigurationProvider } from '@main/common/config';
@NgModule({
declarations: [AppComponent],CommonModule.forRoot({
config: {
provide: LibConfigurationProvider,
这可能吗?或者我是否需要在 CommonModule 而不是 ConfigModule 中重新路由所有基于配置的类、模型和组件?
我的第三个也是最后一个问题。对于像@main/common 这样的库,我是否有可能拥有像 CommonModule 这样的根模块,并且在该库内部还有其他子模块,例如位于 @main/common/api 中的 ApiModule 和 @main 中的 ConfigModule /常见/配置?在这种情况下,我是否需要按原样导入它们并使其仍然有效:
@NgModule({
declarations: [AppComponent],CommonModule,
再说一次,我可能在其中的一些问题上不屑一顾,但我正在努力为我的场景想出最好的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。