2017-03-06 1 views
0

Je viens de passer de ng2-translate (v. 5.x.x) à ngx-translate (v. 6.x.x) dans mon Angular 2 Universal App.Ngx-traduire avec Angular Universal

Avant la mise à niveau que j'utilisais ce chargeur (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(); 
    }); 
    } 
} 

que j'utilisais comme ceci:

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

Après la mise à niveau ngx-translate, cependant, je reçois cette erreur dans le console de terminal (donc, erreur côté serveur):

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'. 

on sait comment configurer un chargeur personnalisé pour le support côté serveur avec Angular Universal avec ngx-translate?

Répondre

0

La solution était beaucoup plus facile que prévu et détaillée dans le migration guide.

En 6.x.x ce qui a été modifié qui a été la rupture du code est la valeur attendue passée à forRoot().

Maintenant, nous devons passer le chargeur comme un objet de la clé loader, comme ceci:

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