Angular 2使用多个模块时保持ng2-translate DRY

时间:2016-12-29 22:29:30

标签: javascript angular typescript ng2-translate

我是Angular 2的新成员,并且在使用多个模块时有关于保持代码DRY的问题。

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

其中一项进口是ng2-translate。

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

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

那么我如何保持此代码 DRY 保持最佳做法

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 {
}

的AppModule

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设置默认语言。

如何阻止此模式?

0 个答案:

没有答案