[英]Ngx-translate with Angular Universal
I just upgraded from ng2-translate
( v. 5.xx
) to ngx-translate
( v. 6.xx
) in my Angular 2 Universal App. 我刚刚从升级
ng2-translate
( v. 5.xx
)到ngx-translate
( v. 6.xx
在我的角2通用应用程序)。
Before the upgrade I was using this loader ( 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();
});
}
}
That I was using like so: 我使用的是这样的:
@NgModule({
bootstrap: [AppComponent],
declarations: [ AppComponent ],
imports: [
FormsModule,
CoreModule,
ViewsModule,
TranslateModule.forRoot({
provide: TranslateLoader,
useClass: TranslateUniversalLoader,
}),
UniversalModule
]
})
After upgrading to ngx-translate
, however, I get this error in the terminal console (thus, server-side error): 但是,升级到
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'.
So anyone knows how to set up a custom loader for server side support with Angular Universal with ngx-translate
? 因此,谁知道如何通过
ngx-translate
为Angular Universal设置服务器端支持的自定义加载程序?
The solution was way easier than expected and detailed in the migration guide . 该解决方案比预期的要容易得多,并且在迁移指南中进行了详细说明 。
In 6.xx
what is changed that was breaking the code is the expected value passed to forRoot()
. 在
6.xx
,更改代码的更改是传递给forRoot()
的期望值。
Now we need to pass the loader as an object of the loader
key, like so: 现在,我们需要将加载程序作为
loader
键的对象传递,如下所示:
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateUniversalLoader,
}
}),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.