web-dev-qa-db-fra.com

L'argument de type 'Http' n'est pas assignable au paramètre de type 'Http' dans Ionic ngx-translate

Je développe une application mobile Ionic 2 et je souhaite utiliser les fonctionnalités de ngx-translate. Suite au tutoriel, j'importe les fichiers nécessaires dans le module d'application comme ceci:

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

export function createTranslateLoader(http: Http) {
  return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

ce qui donne l'erreur:

 Argument of type 'Http' is not assignable to parameter of type 'Http'.
 Property 'handler' is missing in type 'Http'

Je pense qu'il y a une incompatibilité de paquets attendue par ngx-translate mais je ne peux pas comprendre quoi et comment. Ma version @ angular/http est 4.3.2 Quelqu'un at-il une idée de quoi faire?

12
Adnan Senyurt

le problème est dû à une version de conflit, vous avez peut-être installé une version "^ 1.0.2" de "@ ngx-translate/http-loader" bien que votre fonction soit disponible pour une version précédente. ne t'inquiète pas! il suffit d'utiliser HttpClient au lieu de Http ..

n'oubliez pas de changer la valeur de la constante 'deps' et d'importer le HttpClientModule dans votre module (ou dans votre app.module)

don't forget to change the value of 'deps' constant and import the HttpClientModule in your module (or in your app.module)

37
Smaillns

Essayez d'utiliser HttpClient

import {HttpClientModule, HttpClient} from '@angular/common/http';
import {TranslateModule, TranslateLoader} from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
import {AppComponent} from "./app.component";

export function HttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http, "./assets/i18n/", ".json");
}

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