2

我是使用 Angular 2 的新手,并且有一个关于在使用多个模块时保持代码干燥的问题。

我有一个共享模块,我在其中导入和导出其他模块的常用功能。

其中一个进口是 ng2-translate。

但是当我将它SharedModule导入一个新模块时,我需要再次导入和配置TranslateModulefrom ng2-translate,以便能够配置它。

如果我应该使用多个模块,这给了我一个我不喜欢的模式。

那么我将如何保持此代码干燥保持最佳实践呢?

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from 'ng2-translate';

@NgModule({
  imports: [
    CommonModule,
    TranslateModule
  ],
  exports: [
    CommonModule,
    TranslateModule
  ]
})

export class SharedModule {
}

应用模块

import { NgModule } from '@angular/core';
import { HttpModule, Http } from '@angular/http';
import { TranslateModule, TranslateLoader, TranslateStaticLoader, TranslateService } from 'ng2-translate';
import { SharedModule } from './shared/shared.module';
import { AppComponent } from './app.component';

export function translateLoaderFactory(http: Http) {
  return new TranslateStaticLoader(http, '../assets/i18n', '.json')
}

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    HttpModule,
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useFactory: translateLoaderFactory,
      deps: [Http]
    }),
    SharedModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {
  constructor(translateService: TranslateService) {

    translateService.setDefaultLang('en-US');

    translateService.use('sv-SE');
  }
}

这是我的基本结构,如果我添加一个新模块,我将不得不导入SharedModuleTranslateModule并重新设置默认语言TranslateService

如何防止这种模式?

4

0 回答 0