一个服务,在许多ngModule中有变量

时间:2016-11-16 16:33:00

标签: angular angular2-services angular2-modules

这不是一个真正的问题,但它是一个问题:

在测试项目中,我尝试在具有相同TranslateService的多个ngModule中使用ng2-translate。

package.json:

"ng2-translate": "^4.0.0"

它不起作用,因为每个模块都必须声明一个新的

' TranslateModule'

在组件中,它是一个新的TranslateService,因此它不会保留翻译语言的价值。

您是否尝试在多个ngModule中注入相同的服务?如果有,怎么样?

感谢。

1 个答案:

答案 0 :(得分:1)

尝试共享模块

   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],
        };
    }
    }

将AppModule.ts中的TranslateModule.forRoot()更改为SharedModule.forRoot()。

source