0

我刚刚在我的 Angular 2 通用应用程序中从ng2-translate( v. 5.x.x) 升级到ngx-translate( )。v. 6.x.x

在升级之前,我使用了这个加载器(在这里找到):

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

4

1 回答 1

0

该解决方案比预期的要容易得多,并且在迁移指南中进行了详细说明。

破坏6.x.x代码的更改是传递给forRoot().

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

TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useClass: TranslateUniversalLoader,
  }
}),
于 2017-03-08T22:50:54.627 回答