Aucun fournisseur pour Staticinjectorerror

j'essaie de tirer les données de mon api, et de les remplir dans mon application ionique, mais elles s'écrasent quand j'entre la page sur laquelle les données doivent être remplies. Ci-dessous sont mes deux .fichiers ts:

import { Component } from '@angular/core';

import { NavController, LoadingController } from 'ionic-angular';
import { RestService } from '../../providers/rest-service/rest-service';

@Component({
  selector: 'page-all-patients',
  templateUrl: 'all-patients.html',
  providers: [RestService]
})
export class AllPatientsPage {
  data: any;
  loading: any;

  constructor(public navCtrl: NavController, public restService: RestService, public loadingCtrl: LoadingController) {

    this.loading = this.loadingCtrl.create({
      content: `
        <ion-spinner></ion-spinner>`
    });
    this.getdata();
  }

  getdata() {
    this.loading.present();
    this.restService.getJsonData().subscribe(
      result => {
        this.data=result.data.children;
        console.log("Success: " + this.data);
      },
      err => {
        console.error("Error : " + err);
      },
      () => {
        this.loading.dismiss();
        console.log('getData completed');
     }
   );
 }
}

et l'autre fichier:

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

/*
  Generated class for the RestServiceProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/

@Injectable()
export class RestService {

  constructor(public http: Http) {
    console.log('Hello RestServiceProvider Provider');
  }

  getJsonData() {
    // return Promise.resolve(this.data);

     return this.http.get('url').map(res => res.json());
   }

}

j'ai essayé d'utiliser le HttpModule ainsi, mais c'est une erreur fatale. L'erreur est que le montre:

Error: Uncaught (in promise): Error: StaticInjectorError[Http]: 
  StaticInjectorError[Http]: 
    NullInjectorError: No provider for Http!
Error: StaticInjectorError[Http]: 
  StaticInjectorError[Http]: 
    NullInjectorError: No provider for Http!
    at _NullInjector.get (http://lndapp.wpi.edu:8100/build/vendor.js:1276:19)

Je ne sais pas pourquoi il n'y a pas d'erreur de fournisseur, car c'est le fournisseur créé par le cadre ionique

25
demandé sur Aravind 2017-11-26 05:30:00
la source

3 ответов

pour utiliser Http dans votre application, vous devrez ajouter le HttpModule à votre application.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ErrorHandler } from '@angular/core';
import { HttpModule } from '@angular/http';
...
  imports: [
    BrowserModule,
    HttpModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ]

EDIT

Comme mentionné dans le commentaire ci-dessous, HttpModuledeprecated maintenant, utilisez import { HttpClientModule } from '@angular/common/http'; assurez-vous que HttpClientModule dans votre imports:[] array

60
répondu Sajeetharan 2018-09-03 05:01:09
la source

mise à Jour: Angulaire v6+

pour les applications converties à partir de versions plus anciennes (Angular v2 - v5): HttpModule est maintenant déprécié et vous devez le remplacer par HttpClientModule ou vous obtiendrez l'erreur aussi.

  1. Dans votre app.module.ts remplacer import { HttpModule } from '@angular/http'; avec le nouveau HttpClientModule import { HttpClientModule} from "@angular/common/http"; Note: assurez-vous de mettre à jour les modules imports[] array par le retrait de l'ancien HttpModule et le remplacer par le nouveau HttpClientModule.
  2. dans l'un de vos services qui ont utilisé HttpModule remplacer import { Http } from '@angular/http'; avec le nouveau HttpClient import { HttpClient } from '@angular/common/http';
  3. mettez à jour la façon dont vous gérez votre réponse Http. Par exemple - si vous avez un code qui ressemble à ceci

    http.get('people.json').subscribe((res:Response) => this.people = res.json());

l'exemple de code ci-dessus résultera en une erreur. Nous n'avons plus besoin d'analyser la réponse, parce qu'elle revient déjà comme JSON dans l'objet de configuration.

le callback de l'abonnement copie les champs de données dans l'objet de configuration du composant, qui est lié aux données dans le modèle du composant pour affichage.

pour de plus amples renseignements, veuillez consulter le - Angulaire HttpClientModule - La Documentation Officielle

11
répondu Narm 2018-07-17 22:01:46
la source

Ajouter ces deux fichiers dans votre app.module.ts

import { FileTransfer } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';

après les déclarer au fournisseur..

providers: [
    Api,
    Items,
    User,
    Camera,
    File,
    FileTransfer];

C'est du travail pour moi.

0
répondu Rajiv Pandey 2018-08-21 13:32:38
la source

Autres questions sur