使用Angular Universal进行Ngx-translate

时间:2017-03-06 21:55:17

标签: angular angular2-universal ngx-translate

我刚刚在Angular 2 Universal App中从ng2-translatev. 5.x.x)升级到ngx-translatev. 6.x.x)。

在升级之前我使用了这个加载器(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'.

所以任何人都知道如何使用ngx-translate的Angular Universal为服务器端支持设置自定义加载程序?

1 个答案:

答案 0 :(得分:0)

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

6.x.x中,违反代码的更改是传递给forRoot()的预期值。

现在我们需要将加载器作为loader键的对象传递,如下所示:

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