2

私はAngular 2を初めて使用し、複数のモジュールを使用するときにコードをDRYに保つことについて質問があります.

他のモジュールでよく使用される機能をインポートおよびエクスポートする共有モジュールがあります。

それらのインポートの 1 つが ng2-translate です。

しかしSharedModule、新しいモジュールにをインポートするときは、構成TranslateModuleできるように ng2-translate から再度インポートして構成する必要があります。

これにより、複数のモジュールで作業する必要がある場合に嫌いなパターンが得られます。

では、このコードを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 {
}

アプリモジュール

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');
  }
}

これが私の基本的な構造です。新しいモジュールを追加する場合は、 をインポートしSharedModule、もう一度TranslateModuleを使用してデフォルト言語を設定する必要がありますTranslateService

このパターンを防ぐにはどうすればよいですか?

4

0 に答える 0