angular - Ionic3 延迟加载和翻译不能一起工作

标签 angular typescript ionic-framework ionic2 ionic3

最近我升级了 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/

相关文章:

javascript - Angular 2 选择选项(下拉)-如何获取更改值以便在函数中使用它?

javascript - ion-slides 如何在 ionic 1.2.4 上工作(或者它是否适用于 1.2.4?)

ios - ionic 3 支持的最低 iOS 版本是多少?

node.js - 将 Node 和 Angular 部署到 Heroku 错误

javascript - 如何使用 Protractor 检查页面是否有 Angular

html - SVG 过滤器 url 在 Angular 4 中不起作用

typescript - 是否可以在 TypeScript 中推断记录的键?

javascript - 从 Javascript 调用 Typescript 类时的语法

Angular RxJS : event emitted twice

android - Cordova 构建安卓