我在Angular应用中获得了EXCEPTION: No provider for Http!
。我做错了什么?
import {Http, Headers} from 'angular2/http';
import {Injectable} from 'angular2/core'
@Component({
selector: 'greetings-ac-app2',
providers: [],
templateUrl: 'app/greetings-ac2.html',
directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
pipes: []
})
export class GreetingsAcApp2 {
private str:any;
constructor(http: Http) {
this.str = {str:'test'};
http.post('http://localhost:18937/account/registeruiduser/',
JSON.stringify(this.str),
{
headers: new Headers({
'Content-Type': 'application/json'
})
});
答案 0 :(得分:493)
导入HttpModule
import { HttpModule } from '@angular/http';
@NgModule({
imports: [ BrowserModule, HttpModule ],
providers: [],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export default class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
理想情况下,您将此代码拆分为两个单独的文件。 欲了解更多信息,请阅读:
答案 1 :(得分:50)
> = Angular 4.3
引入了.csv
HttpClientModule
Angular2> = RC.5
将import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
FormsModule, // if used
HttpClientModule,
JsonpModule // if used
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
导入您使用它的模块(例如HttpModule
:
AppModule
导入import { HttpModule } from '@angular/http';
@NgModule({
imports: [
BrowserModule,
FormsModule, // if used
HttpModule,
JsonpModule // if used
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
与在先前版本中添加HttpModule
非常相似。
答案 2 :(得分:9)
由于 rc.5 ,您必须执行类似
的操作@NgModule({
imports: [ BrowserModule],
providers: [ HTTP_PROVIDERS ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export default class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
答案 3 :(得分:9)
使用2016年9月14日的Angular 2.0.0版本,您仍在使用HttpModule。您的主app.module.ts
看起来像这样:
import { HttpModule } from '@angular/http';
@NgModule({
bootstrap: [ AppComponent ],
declarations: [ AppComponent ],
imports: [
BrowserModule,
HttpModule,
// ...more modules...
],
providers: [
// ...providers...
]
})
export class AppModule {}
然后在你的app.ts
中你可以自行引导:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/main/app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
答案 4 :(得分:8)
在使用之前,将HttpModule添加到 app.module.ts 文件中的导入数组中。
import { HttpModule } from '@angular/http';
@NgModule({
declarations: [
AppComponent,
CarsComponent
],
imports: [
BrowserModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

答案 5 :(得分:6)
因为它只在评论部分重复了Eric的回答:
我必须包含HTTP_PROVIDERS
答案 6 :(得分:5)
在app.module.ts文件中导入HttpModule
。
import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';
还记得在下面的导入下声明HttpModule:
imports: [
BrowserModule,
HttpModule
],
答案 7 :(得分:4)
最好的方法是通过在providers数组中添加Http来更改组件的装饰器,如下所示。
@Component({
selector: 'greetings-ac-app2',
providers: [Http],
templateUrl: 'app/greetings-ac2.html',
directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
pipes: []
})
答案 8 :(得分:3)
从RC5起,您需要像这样导入HttpModule:
import { HttpModule } from '@angular/http';
然后在Günter上面提到的进口数组中包含HttpModule。
答案 9 :(得分:3)
只需包含以下库:
import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';
并在providers
部分中包含http类,如下所示:
@Component({
selector: '...',
templateUrl: './test.html',
providers: [YourHttpTestService]
答案 10 :(得分:2)
如果测试中出现此错误,则应为所有服务创建虚假服务:
例如:
Customers | Main Location
---------------+---------------
Somebody | 1
somebody else | 1
Someone | something
someone else | 1
0 | 1
| 1
在之前的每个人:
import { YourService1 } from '@services/your1.service';
import { YourService2 } from '@services/your2.service';
class FakeYour1Service {
public getSomeData():any { return null; }
}
class FakeYour2Service {
public getSomeData():any { return null; }
}
答案 11 :(得分:2)
**
简单的灵魂:在 app.module.ts上导入HttpModule和HttpClientModule
**
import { HttpClientModule } from '@angular/common/http';
import { HttpModule } from '@angular/http';
@NgModule({
declarations: [
AppComponent, videoComponent, tagDirective,
],
imports: [
BrowserModule, routing, HttpClientModule, HttpModule
],
providers: [ApiServices],
bootstrap: [AppComponent]
})
export class AppModule { }
答案 12 :(得分:0)
我在代码中遇到了这个问题。我只把这段代码放在我的app.module.ts。
import { HttpModule } from '@angular/http';
@NgModule({
imports: [ BrowserModule, HttpModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
答案 13 :(得分:0)
您需要做的就是在漫游 app.module.ts 中包含以下库,并将其包含在您的导入中:
import { HttpModule } from '@angular/http';
@NgModule({
imports: [ HttpModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
答案 14 :(得分:0)
import { HttpModule } from '@angular/http';
包放在module.ts文件中,并将其添加到导入中。
答案 15 :(得分:0)
我只需将这两个都添加到我的app.module.ts中:
"import { HttpClientModule } from '@angular/common/http';
&
import { HttpModule } from '@angular/http';"
现在可以正常工作了...。 并且不要忘记添加
@NgModule => Imports:[] array