Angular 4 和 Ionic 3 没有 HTTP 提供程序
Angular 4 and Ionic 3 No provider for HTTP
我有一个导入 Http 的服务,当我在我的应用程序中使用它时会抛出错误。 “没有 Http 提供程序!在 g injectionError 处出错”。我正在延迟加载应用程序。此外,提供程序是通过 cli“ionic g provider ...
”
生成的
抱怨-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 {
}
有什么建议吗?
您必须将 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+、Ionic 3+
HttpModule 在最新版本的 ionic3 和 Angular5 中已弃用。因此,您必须使用 HttpClientModule 而不是 HttpModule。其他事情将与@devqon 的回答相同。之后,您就可以在您的服务或组件文件中使用HttpClient了。
更多内容请参考Angular的原文档。
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 插件
我有一个导入 Http 的服务,当我在我的应用程序中使用它时会抛出错误。 “没有 Http 提供程序!在 g injectionError 处出错”。我正在延迟加载应用程序。此外,提供程序是通过 cli“ionic g provider ...
”
抱怨-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 {
}
有什么建议吗?
您必须将 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+、Ionic 3+
HttpModule 在最新版本的 ionic3 和 Angular5 中已弃用。因此,您必须使用 HttpClientModule 而不是 HttpModule。其他事情将与@devqon 的回答相同。之后,您就可以在您的服务或组件文件中使用HttpClient了。
更多内容请参考Angular的原文档。
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 插件