Ngx-перевод с угловым универсальным
Я только что обновился с ng2-translate
(v. 5.x.x
) чтобы ngx-translate
(v. 6.x.x
) в моем Angular 2 Universal App.
До обновления я использовал этот загрузчик ( находится здесь):
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
?
1 ответ
Решение
Решение оказалось намного проще, чем ожидалось, и подробно описано в руководстве по миграции.
В 6.x.x
то, что изменилось, что нарушило код, - это ожидаемое значение, переданное forRoot()
,
Теперь нам нужно передать загрузчик как объект loader
ключ, вот так:
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateUniversalLoader,
}
}),