web-dev-qa-db-fra.com

Angular 4 et Ionic 3 Aucun fournisseur pour HTTP

J'ai un service qui importe Http, et quand je l'utilise dans mon application, il génère une erreur. "Aucun fournisseur pour Http! Erreur à g injectionError". Je suis lazyloading l'application. De plus, le fournisseur a été généré via cli "ionic g provider ..."

plainte-service.ts

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()
export class ComplaintService {
    private complaints: {subject: string, description: string}[] = [];

    constructor(public http: Http) {
        this.http = http;
        this.complaints = null;
        console.log('Hello ComplaintService Provider');
    }

    addComplaints(complaint: {subject: string, description: string}) {
        this.complaints.Push(complaint);
    }

    getComplaints() {
        return this.complaints.slice();
    }

}

plainte-form.ts

import { Component } from '@angular/core';
import {Validators, FormBuilder, FormGroup } from '@angular/forms';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import {ComplaintService} from '../../providers/complaint-service';


@IonicPage()
@Component({
  selector: 'page-complaint-form',
  templateUrl: 'complaint-form.html',
  providers: [ComplaintService]
})
export class ComplaintForm {

}

Aucune suggestion? 

22
abhiklpm

Vous devez enregistrer la HttpModule dans votre module (/app.module.ts):

import { HttpModule} from '@angular/http';

@NgModule({
  imports: [
    HttpModule
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule {
}
65
devqon

Ajoutez également HTTP à la liste des fournisseurs. (à AppModule)

import { HTTP } from '@ionic-native/http';

Et

  providers: [
    ...,
    HTTP 
  ]

Travailler avec Angulat5 +, Ionic 3+

0

HttpModule est obsolète dans les dernières versions de ionic3 et angular5. Donc, vous devez utiliser HttpClientModule au lieu de HttpModule. D'autres choses seront identiques à la réponse de @ devqon. Ensuite, vous pouvez utiliser HttpClient dans votre fichier de service ou de composant.

Pour plus d’informations, veuillez vous reporter au document original de Angular.

https://angular.io/guide/http

import {HttpClientModule} from "@angular/common/http";

@NgModule({
  imports: [
    HttpClientModule
 ],
 declarations: [ AppComponent ],
 bootstrap:    [ AppComponent ]
})
export class AppModule {
}
0
Darpan
import {HttpClientModule} from "@angular/common/http";

@NgModule({
  declarations: [
    ChatPage,
  ],
  imports: [
    IonicPageModule.forChild(ChatPage),
    HttpModule,
    HttpClientModule,// add HttpClientModule to import
    SocketIoModule.forRoot(config)
  ],

})

N'oubliez pas de courir avec ionic cordova run browser car vous avez besoin d'une plate-forme pour exécuter les plugins cordova

0
Biswajit