wake-up-neo.com

Angular AUSNAHME: Kein Anbieter für HTTP

Ich erhalte den EXCEPTION: No provider for Http! in meiner Angular App. Was mache ich falsch?

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'
                })
            });
295
daniel

Importieren Sie das HttpModule

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

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

platformBrowserDynamic().bootstrapModule(AppModule);

Idealerweise teilen Sie diesen Code in zwei separate Dateien auf. Weitere Informationen finden Sie hier:

480
Philip Miglinci

> = Winkel 4,3

für die eingeführte HttpClientModule 

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

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

Angular2> = RC.5

Importieren Sie HttpModule in das Modul, in dem Sie es verwenden (hier zum Beispiel die AppModule:

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

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

Das Importieren von HttpModule ähnelt dem Hinzufügen von HTTP_PROVIDERS in früheren Versionen. 

41

Seit rc.5 musst du sowas machen

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

platformBrowserDynamic().bootstrapModule(AppModule);
9
Adrian Ber

Mit der Version 2.0 von Angular 2.0 vom 14. September 2016 verwenden Sie noch HttpModule. Ihr app.module.ts würde ungefähr so ​​aussehen:

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

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

Dann können Sie in Ihrem app.ts so bootstrap:

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

platformBrowserDynamic().bootstrapModule(AppModule);
9
Caleb

Fügen Sie HttpModule hinzu, um das Array in app.module.ts zu importieren, bevor Sie es verwenden.

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

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

7

weil es nur im Kommentarbereich war, wiederhole ich die Antwort von Eric:

Ich musste HTTP_PROVIDERS angeben

6
daniel

Der beste Weg ist, den Dekorator Ihrer Komponente durch Hinzufügen von Http im Provider-Array zu ändern.

@Component({
    selector: 'greetings-ac-app2',
    providers: [Http],
    templateUrl: 'app/greetings-ac2.html',
    directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
    pipes: []
})
4
Shivang Gupta

Importieren Sie HttpModule in Ihre app.module.ts-Datei.

import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';

Denken Sie auch daran, HttpModule unter Importen wie folgt anzugeben:

imports: [
    BrowserModule,
    HttpModule
  ],
4
poo arasan

Fügen Sie einfach die folgenden Bibliotheken hinzu: 

import { HttpModule } from '@angular/http';
import { YourHttpTestService } from '../services/httpTestService';

und fügen Sie die http-Klasse wie folgt in den Abschnitt providers ein:

@Component({
  selector: '...',
  templateUrl: './test.html',
  providers: [YourHttpTestService]
3
Enayat Rajabi

ab RC5 müssen Sie das HttpModule wie folgt importieren: 

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

fügen Sie dann das HttpModule in das Import-Array ein, wie oben von Günter erwähnt. 

3
mareks
**

Einfache Lösung: Importieren Sie das HttpModule und das HttpClientModule in Ihre app.module.ts

**

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 { }
2
ngCourse

Wenn Sie diesen Fehler in Ihren Tests haben, sollten Sie einen Fake-Service für alle Services erstellen:

Zum Beispiel:

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; }
}

Und in vorJedem: 

beforeEach(async(() => {
  TestBed.configureTestingModule({
    providers: [
      Your1Service,
      Your2Service,
      { provide: Your1Service, useClass: FakeYour1Service },
      { provide: Your2Service, useClass: FakeYour2Service }
    ]
  }).compileComponents();  // compile template and css
}));
2
Experimenter

Ich habe dieses Problem in meinem Code gesehen. Ich füge diesen Code nur in app.module.ts ein.

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

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

import { HttpModule } from '@angular/http';-Paket in Ihrer module.ts-Datei und fügen Sie es Ihren Importen hinzu.

0
Alekya

Alles, was Sie tun müssen, ist, die folgenden Bibliotheken in tour app.module.ts aufzunehmen und in Ihre Importe aufzunehmen:

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

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

Ich füge beides einfach in meiner app.module.ts hinzu:

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

&

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

Nun funktioniert es gut .... Und vergessen Sie nicht, das zu ergänzen 

@NgModule => Imports:[] array

0