Angular EXCEPTION:没有Http的提供者

dan*_*iel 322 angular

我正在使用EXCEPTION: No provider for Http!我的Angular应用程序.我究竟做错了什么?

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'
                })
            });
Run Code Online (Sandbox Code Playgroud)

Phi*_*nci 506

导入HttpModule

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

@NgModule({
    imports: [ BrowserModule, HttpModule ],
    providers: [],
    declarations: [ AppComponent ],
    bootstrap: [ AppComponent ]
})
export default class AppModule { }

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)

理想情况下,您将此代码拆分为两个单独的文件.欲了解更多信息,请阅

  • 在angular-cli生成的项目中,该文件名为`main.ts`. (7认同)
  • 在当前的Angular2 beta中,该文件名为`app.ts`. (2认同)
  • @PhilipMiglinci ...感谢宝贵的答案..为搜索者添加一些点,文件将是**app.module.ts**在角度2.0中解释这是项目的核心文件,包括模块将使用进一步继承的类. (2认同)

Gün*_*uer 56

> = Angular 4.3

为介绍 HttpClientModule

import { HttpClientModule } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule, // if used
    HttpClientModule,
    JsonpModule // if used
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

Angular2> = RC.5

导入HttpModule到您使用它的模块(例如AppModule:

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

@NgModule({
  imports: [
    BrowserModule,
    FormsModule, // if used
    HttpModule,
    JsonpModule // if used
  ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

导入HttpModuleHTTP_PROVIDERS在先前版本中添加非常相似.


Adr*_*Ber 9

rc.5起,你必须做类似的事情

@NgModule({
    imports: [ BrowserModule],
    providers: [ HTTP_PROVIDERS ],
    declarations: [ AppComponent ],
    bootstrap: [ AppComponent ]
})
export default class AppModule { }

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)


Cal*_*leb 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 {}
Run Code Online (Sandbox Code Playgroud)

然后在你的app.ts你可以引导如此:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/main/app.module';

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)


Sur*_*uru 9

在使用之前,将HttpModule添加到app.module.ts文件中的导入数组中.

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

@NgModule({
  declarations: [
    AppComponent,
    CarsComponent
  ],
  imports: [
    BrowserModule,
	HttpModule  
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)


dan*_*iel 6

因为它只是在评论部分我重复Eric的回答:

我必须包括 HTTP_PROVIDERS

  • ...另外,HTTP_PROVIDERS已被折旧.它现在被称为*HttpModule*.. /sf/ask/2723252521/ (2认同)

小智 5

导入HttpModule您的app.module.ts文件。

import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';
Run Code Online (Sandbox Code Playgroud)

还记得在如下所示的导入下声明HttpModule:

imports: [
    BrowserModule,
    HttpModule
  ],
Run Code Online (Sandbox Code Playgroud)