ngx-translate .pipe не является функцией

При использовании ngx-translate появляется следующая ошибка:

this.currentLoader.getTranslation(...).pipe is not a function
at TranslateService.getTranslation (core.es5.js:3171)
at TranslateService.retrieveTranslations (core.es5.js:3157)
at TranslateService.setDefaultLang (core.es5.js:3098)
at new AppComponent (app.component.ts:11)
at createClass (core.js:12470)
at createDirectiveInstance (core.js:12315)
at createViewNodes (core.js:13776)
at createRootView (core.js:13665)
at callWithDebugContext (core.js:15090)
at Object.debugCreateRootView [as createRootView] (core.js:14373)

это мой компонент приложения:

import { Component } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';

@Component({
    selector: 'app',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {
    constructor(private translate: TranslateService) {
        translate.setDefaultLang('en');
        translate.use('en');
    }
}

Здесь я импортирую модуль, и он объявлен выше, используя импорт.

 imports: [
            TranslateModule.forRoot()
    ]

Я также импортирую TranslateService:

providers: [
        TranslateService
    ],

Если я удалю строки в конструкторе, я не получу ошибок, но это означает, что у меня тоже не будет перевода. Я создал файл json в: ClientApp / assets / i18n / en.json

Я использую это в основном шаблоне .NET, предоставленном Visual Studio. Я обновил шаблон с Angular 4 до Angular 5. Другие надстройки работают нормально, просто не могу исправить ошибку.

Ниже приведены версии: - «@ ngx-translate / core»: «9.1.1», - «@ ngx-translate / http-loader»: «2.0.1» - Angular 5.1.1


person Joshua Stelten    schedule 12.06.2018    source источник
comment
где ты этим пользуешься? this.currentLoader.getTranslation (...)?   -  person Sajeetharan    schedule 12.06.2018
comment
Я не. Это весь код, который я написал для него. Я перенес проект на новый шаблон, используя angular 5.2 с ядром .net 2. Он там работает!   -  person Joshua Stelten    schedule 15.06.2018


Ответы (2)


Вам необходимо использовать TranslateHttpLoader для загрузки переводов из "/ assets / i18n / en. json "

...
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
...

// AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http);
}

@NgModule({
    imports: [
       BrowserModule,
       HttpClientModule,
       TranslateModule.forRoot({
          loader: {
            provide: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
          }
      })
   ],
   bootstrap: [AppComponent]
 })
 export class AppModule { }
person qorsmond    schedule 12.06.2018

он работает с @ ngx-translate / core v8.0.0 с 9.1.1 У меня была такая же проблема

package.json "@ ngx-translate / core": "8.0.0"

person Eugene    schedule 23.06.2018