2017-04-25 59 views
21

我有一个服务,它导入Http,当我在我的应用程序中使用它时会抛出错误。 “没有提供程序用于在注入错误时发生Http!错误”。我懒加载应用程序。还通过CLI “ionic g provider ...Angular 4和Ionic 3没有HTTP的提供商

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

} 

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

} 

任何建议所产生的供应商?

+1

你必须注册'Http'在你的模块 – devqon

+0

@devqon了'providers' - 我们需要它,而延迟加载也? – abhiklpm

+0

请注意** Ionic原生插件中的** Http ** **与**'HTTP ** **之间的区别。如果后者获得'no provider error',请将''''''''''''''''''可以从'ionic-native'_导入到'app.module.ts'中。 –

回答

59

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

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

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

我应该在哪里写这段代码? – malhobayyeb

+3

在定义你的应用模块类的ts文件中 – devqon

+0

我将这段代码添加到我的项目中:'testIonic/src/app/app.module.ts',它的工作原理是:) –