import { ModuleWithProviders, NgModule, InjectionToken, Injector } from '@angular/core'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { NaTranslateService } from './na-translate.service'; import { HttpClient } from '@angular/common/http'; // import { MultiTranslateHttpLoader, ITranslationResource } from 'ngx-translate-multi-http-loader'; import { MultiTranslateHttpLoader, ITranslationResource } from './multi-http-loader'; export const NA_DEFAULT_RESOURCES = new InjectionToken( 'NA_DEFAULT_RESOURCES' ); export function createTranslateLoader(http: HttpClient, resources: ITranslationResource[], injector: Injector) { return new MultiTranslateHttpLoader(http, resources, injector); } @NgModule({ imports: [ TranslateModule ], exports: [ TranslateModule, ], providers: [ NaTranslateService ] }) export class NaTranslateModule { static forRoot(resources: ITranslationResource[] = []): ModuleWithProviders { return { ngModule: NaTranslateModule, providers: [ { provide: NA_DEFAULT_RESOURCES, useValue: resources }, ...TranslateModule.forRoot({ loader: { provide: TranslateLoader, useFactory: (createTranslateLoader), deps: [HttpClient, NA_DEFAULT_RESOURCES, Injector] }, // 隔离服务 isolate: true, useDefaultLang: true }).providers ] }; } }