Angular 4和Ionic 3没有HTTP的提供商



我有一个导入http的服务,当我在应用中使用它时会引发错误。" g InjectionError 的HTTP!错误没有提供商。"我正在懒惰的应用程序。另外,提供商是通过CLI" ionic g provider ..."生成的

投诉 - 服务

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();
    }
}

投诉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 {
}

有什么建议吗?

您必须将HttpModule注册到模块(/app.module.ts(:

import { HttpModule} from '@angular/http';
@NgModule({
  imports: [
    HttpModule
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule {
}

也将 HTTP添加到提供者列表中。(到AppModule(

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

  providers: [
    ...,
    HTTP 
  ]

使用angulat5 ,离子3

httpmodule在最新版本的ionic3和angular5中被弃用。因此,您必须使用httpclientmodule代替httpmodule。其他事情将与 @devqon的答案相同。之后,您可以在服务或组件文件中使用httpclient。

有关更多信息,请参阅Angular的原始文档。

https://angular.io/guide/http

import {HttpClientModule} from "@angular/common/http";
@NgModule({
  imports: [
    HttpClientModule
 ],
 declarations: [ AppComponent ],
 bootstrap:    [ AppComponent ]
})
export class AppModule {
}
import {HttpClientModule} from "@angular/common/http";
@NgModule({
  declarations: [
    ChatPage,
  ],
  imports: [
    IonicPageModule.forChild(ChatPage),
    HttpModule,
    HttpClientModule,// add HttpClientModule to import
    SocketIoModule.forRoot(config)
  ],
})

不要忘记使用 Ionic Cordova运行浏览器,因为您需要一个平台运行Cordova插件

最新更新