NG2译为曲线模型



在我们的Angular应用中,我们具有功能模块以及 core and 共享模块如所描述角 - 链路风格结构最佳实践。

我们使用ng2-translate并根据DOC,我们应该在 App Module 中调用forRoot()( root Module (。

这就是我们的应用模块看起来像:

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    FeatureAModule,
    FeatureBModule,
    CoreModule,
    TranslateModule.forRoot({
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [Http]
    })
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

当我们想翻译菜单时,它是 Core Module 的一部分,我们必须导入 Translate Module ,就像So:

@NgModule({
  imports: [
    TranslateModule
  ],
  exports: [
      FormsModule,
      MenuComponent,
      BreadcrumbComponent
  ],
  declarations: [MenuComponent, BreadcrumbComponent]
})
export class CoreModule {
    constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
      throwIfAlreadyLoaded(parentModule, "CoreModule");
    }
 }

这有意义吗?我是否应该从 App Module 中删除TranslateModule.forRoot(...)并将其放入 imports core core Module >?这是错误的吗?

如果您正在关注文档,则AppModule将是唯一导入CoreModule的 CC_4。如果是这样,如果您只将TranslateModule.forRoot()添加到CoreModule.imports数组,而TranslateModule则可以正常工作。然后在您的AppModule中,您需要做的就是导入CoreModule,而无需再次处理翻译模块。

这类似于文档建议集成RouterModule的建议。看看这个。请注意,RouterModule.forRoot()是在AppRoutingModule中导入的,但不在AppModule本身中。所以在你的位置,我会有:

coremodule

// forRoot is OK here because AppModule is the only one to import CoreModule
imports: [TranslateModule.forRoot(...)]
// will make Translate available to AppModule
exports: [TranslateModule]

AppModule

//importing Core will import Translate and its services provided by .forRoot()
imports: [CoreModule]

共享模块

//only if the components, directives and pipes of SharedModule need Translate
imports: [TranslateModule]
//so that all modules that import SharedModule will have Translate access
exports: [TranslateModule]

最新更新