最近我升级了 Ionic,现在是 Ionic3
现在当前的应用程序不能同时使用 Ionic 和 ng2-translate。
同样的代码在没有延迟加载的情况下工作得很好,但我们需要使用延迟加载来改善应用程序加载时间并减少启动显示的持续时间。
app.module.ts 导入组件看起来像
TranslateModule.forRoot({
provide: TranslateLoader,
useClass: TMATranslationLoader
})
TMATranslationLoader 看起来像
export class TMATranslationLoader implements TranslateLoader {
constructor( ) { }
getTranslation(lang: string): Observable<any> {
switch(lang) {
case 'nl':
return Observable.of(translations_nl);
case 'hi':
return Observable.of(translations_hi);
// case 'de':
// return Observable.of(translations_de);
// case 'fr':
// return Observable.of(translations_fr);
// case 'es':
// return Observable.of(translations_es);
default:
return Observable.of(translations_en);
}
}
}
app.component.ts 看起来像
this.rootPage = 'LoginPage';
login-page.html 看起来像
<ion-label floating>{{ 'LBL_USERNAME' | translate }}</ion-label>
被抛出的运行时异常
Error: Uncaught (in promise): Error: Template parse errors:
The pipe 'translate' could not be found (" <ion-list>
<ion-item class="icon-user">
<ion-label floating>{{ [ERROR ->]'LBL_USERNAME' | translate }}</ion-label>
有什么想法吗?我做错了什么吗?
最佳答案
由于延迟加载页面包含它们自己的模块,现在您需要在每个延迟加载页面的模块中导入翻译模块,以使用它。
请看ionic docs related to this .如您所见,使用 ngx-translate 的步骤是:
1) 安装
安装ngx-translate运行
npm install @ngx-translate/core @ngx-translate/http-loader --save.
2) 引导
要使用 ngx-translate,必须首先将其导入并添加到应用程序的 NgModule 中的 imports 数组。
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { Http } from '@angular/http';
...
export function createTranslateLoader(http: Http) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}
@NgModule({
imports: [
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: (createTranslateLoader),
deps: [Http]
}
})
]
})
3) 延迟加载页面
如果你想将 Ionics 延迟加载页面与 ngx-translate
一起使用,你必须配置你的 component.module.ts
文件
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { TranslateModule } from '@ngx-translate/core';
import { HelloPage } from './hello-page';
@NgModule({
declarations: [
HelloPage,
],
imports: [
IonicPageModule.forChild(HelloPage),
TranslateModule.forChild()
],
exports: [
HelloPage
]
})
export class HelloPageModule {}
关于angular - Ionic3 延迟加载和翻译不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44558111/