私は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
。
このパターンを防ぐにはどうすればよいですか?