EXCEPCIÓN angular: no hay proveedor para Http
Obtengo el EXCEPTION: No provider for Http!
en mi aplicación Angular. ¿Qué estoy haciendo mal?
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'
})
});
Aceptado
Importar el módulo Http
import { HttpModule } from '@angular/http';
@NgModule({
imports: [ BrowserModule, HttpModule ],
providers: [],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export default class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
Lo ideal es dividir este código en dos archivos separados. Para más información lea:
- https://v2.angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html
- https://v2.angular.io/docs/ts/latest/guide/ngmodule.html
>= Angular 4.3
para los introducidosHttpClientModule
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
Importe HttpModule
al módulo donde lo use (aquí, por ejemplo AppModule
,:
import { HttpModule } from '@angular/http';
@NgModule({
imports: [
BrowserModule,
FormsModule, // if used
HttpModule,
JsonpModule // if used
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Importar HttpModule
es bastante similar a agregar HTTP_PROVIDERS
en la versión anterior.
Con la versión Angular 2.0.0 del 14 de septiembre de 2016, todavía estás usando HttpModule. Su principal app.module.ts
se vería así:
import { HttpModule } from '@angular/http';
@NgModule({
bootstrap: [ AppComponent ],
declarations: [ AppComponent ],
imports: [
BrowserModule,
HttpModule,
// ...more modules...
],
providers: [
// ...providers...
]
})
export class AppModule {}
Luego, en tu app.ts
puedes arrancar como tal:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/main/app.module';
platformBrowserDynamic().bootstrapModule(AppModule);