Ionic, канал 'translate' не найден, только в компиляторе AoT - PullRequest
0 голосов
/ 14 мая 2018

У меня проблема с ngx-translate в Ionic App, когда я пытаюсь создать производственную версию.

Во время разработки переводы работают нормально с

ionic serve

и

ionic cordova build android

но если я попытаюсь сделать производственную сборку, используя

ionic cordova build android --prod --release

или для PWA

ionic build --prod

Я получаю некоторые ошибки, такие как

[17:47:15]  typescript error 
            The pipe 'translate' could not be found ( ... )

Версия:

  • ngx-translate: 8.0.0
  • Ионные: 3.9.2
  • Угловой: 5.2.10

Я проверил: https://github.com/ngx-translate/core/tree/v8.0.0 и не могу найти, что я делаю неправильно.

В app.module:

// https://github.com/ngx-translate/core#1-import-the-translatemodule
// AoT requires an exported function for factories
export function createTranslateLoader(http: Http) {
    return new TranslateHttpLoader( http, './assets/i18n/', '.json' );
} 

@NgModule( {
    ...
    imports: [
        ...
        TranslateModule.forRoot( {
                loader: {
                    provide: TranslateLoader,
                    useFactory: (createTranslateLoader),
                    deps: [ Http ]
                }
            }
        ),
        ...

И на одной из моих страниц, которые выдают эту ошибку:

import {  TranslateModule, TranslateService, TranslatePipe } from '@ngx-translate/core';

@NgModule({
    imports: [
        TranslateModule
    ],
    exports: [
        TranslateModule
    ]
})
export class ContactPage { ... }

Поиск в SO произвел в основном подсказку для импорта и экспорта TranslateModule на странице, а также импортировал TranslatePipe, но оба эти изменения не решили мою проблему. Как настроить модуль перевода так, чтобы он работал в производственной сборке?

1 Ответ

0 голосов
/ 14 мая 2018

ОК, решил.Я добавил оператор импорта и экспорта TranslateModule в класс страницы, но правильно добавить его в соответствующий модуль.

В моем примере:

Неправильно:

contact.ts

@NgModule({
    imports: [
        TranslateModule
    ],
    exports: [
        TranslateModule
    ]
})
export class ContactsPage {...}

Правильно:

contact.module.ts

@NgModule( {
    ...
    imports : [
        ...
        TranslateModule
    ],
    exports : [
        TranslateModule
    ]

} )
export class ContactsPageModule {
}
...