0

It's not really a problem but it's a question :

In a test project, I try to use ng2-translate in multiple ngModule with a same TranslateService.

package.json :

"ng2-translate": "^4.0.0"

It's not working, for every module I must to declare a new

'TranslateModule'

And in components, it's a new TranslateService so it's does not keep translate language value.

Have you trying to inject same service in multiple ngModule ? if yes, how ?

Thanks.

Heretic Monkey
  • 11,687
  • 7
  • 53
  • 122
Eltron
  • 45
  • 2
  • 8
  • Have you read [https://github.com/ocombe/ng2-translate#installation](https://github.com/ocombe/ng2-translate#installation) installation notes? It clearly states how to use this module for all classes. – Amir Nov 16 '16 at 16:41

1 Answers1

1

Try shared module

   import {TranslateModule, TranslateService, TranslateLoader,    TranslateStaticLoader} from 'ng2-translate/ng2-translate';
    @NgModule({
        imports: [..,TranslateModule],
        declarations: [..],
        exports: [ .., TranslateModule]
    })
    export class SharedModule {

    static forRoot(): ModuleWithProviders {

       function translateLoader(http: Http) {
            return new TranslateStaticLoader(http, 'i18n', '.json');
        }
        return {
            ngModule: SharedModule,
            providers: [UserService, ItemService, {
                provide: TranslateLoader,
                useFactory: translateLoader,
                deps: [Http]
            },
                TranslateService],
        };
    }
    }

Change TranslateModule.forRoot() in AppModule.ts to SharedModule.forRoot().

source

Community
  • 1
  • 1
Adam Michalski
  • 1,722
  • 1
  • 17
  • 38
  • it's work, but I just modify this line : `import {TranslateModule, TranslateService, TranslateLoader, TranslateStaticLoader} from 'ng2-translate/ng2-translate';` by `import {TranslateModule, TranslateService, TranslateLoader, TranslateStaticLoader} from 'ng2-translate';` – Eltron Nov 17 '16 at 08:52