2017-04-25 62 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',它的工作原理是:) –