了解 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 (将#修改为@)