2017-03-06 50 views
0

我剛剛從我的Angular 2通用應用程序中的ng2-translatev. 5.x.x)更新爲ngx-translatev. 6.x.x)。Ngx翻譯與Angular通用

之前我就是用這個加載器(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'. 

因此,任何有人知道如何使用Angular Universal爲ngx-translate設置一個自定義加載程序來支持服務器端?

回答

0

該解決方案比預期的方式更容易,並在migration guide中詳細說明。

6.x.x什麼被改變是打破代碼是傳遞到forRoot()的預期值。

現在,我們需要通過加載器作爲loader關鍵的對象,像這樣:

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