2017-03-06 49 views
0

我刚刚从我的Angular 2通用应用程序中的ng2-translatev. 5.x.x)更新为ngx-translatev. 6.x.x)。Ngx翻译与Angular通用

之前我就是用这个加载器(found here)升级:

class TranslateUniversalLoader implements TranslateLoader { 
    public getTranslation(lang: string): Observable<any> { 
    return Observable.create(observer => { 
     observer.next(JSON.parse(fs.readFileSync(`src/i18n/${lang}.json`, 'utf8'))); 
     observer.complete(); 
    }); 
    } 
} 

,我用像这样:

@NgModule({ 
    bootstrap: [AppComponent], 
    declarations: [ AppComponent ], 
    imports: [ 
    FormsModule, 
    CoreModule, 
    ViewsModule, 
    TranslateModule.forRoot({ 
     provide: TranslateLoader, 
     useClass: TranslateUniversalLoader, 
    }), 
    UniversalModule 
    ] 
}) 

但是升级到ngx-translate,之后,我得到这个错误的终端控制台(因此,服务器端错误):

Module build failed: Error: /src/app/app.node.module.ts (65,7): 
Argument of type '{ provide: typeof TranslateLoader; useClass: typeof TranslateUniversalLoader; }' is not assignable to parameter of type 'TranslateModuleConfig'. 

因此,任何有人知道如何使用Angular Universal为ngx-translate设置一个自定义加载程序来支持服务器端?

回答

0

该解决方案比预期的方式更容易,并在migration guide中详细说明。

6.x.x什么被改变是打破代码是传递到forRoot()的预期值。

现在,我们需要通过加载器作为loader关键的对象,像这样:

TranslateModule.forRoot({ 
    loader: { 
    provide: TranslateLoader, 
    useClass: TranslateUniversalLoader, 
    } 
}),