change - page title angular 4
EXCEPCIÓN angular: no hay proveedor para Http (16)
Agregue HttpModule a la matriz de importaciones en el archivo app.module.ts antes de usarlo.
import { HttpModule } from ''@angular/http'';
@NgModule({
declarations: [
AppComponent,
CarsComponent
],
imports: [
BrowserModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Recibo la
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''
})
});
Con la versión Angular 2.0.0 del 14 de septiembre de 2016, todavía está utilizando HttpModule.
Su
app.module.ts
principal 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 su
app.ts
, puede arrancar como tal:
import { platformBrowserDynamic } from ''@angular/platform-browser-dynamic'';
import { AppModule } from ''./app/main/app.module'';
platformBrowserDynamic().bootstrapModule(AppModule);
Desde rc.5 tienes que hacer algo como
@NgModule({
imports: [ BrowserModule],
providers: [ HTTP_PROVIDERS ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export default class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
Importar el HttpModule
import { HttpModule } from ''@angular/http'';
@NgModule({
imports: [ BrowserModule, HttpModule ],
providers: [],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export default class AppModule { }
platformBrowserDynamic().bootstrapModule(AppModule);
Idealmente, divide este código en dos archivos separados. Para más información lea:
Importe
HttpModule
en su archivo app.module.ts.
import { HttpModule } from ''@angular/http'';
import { YourHttpTestService } from ''../services/httpTestService'';
También recuerde declarar HttpModule bajo importaciones como a continuación:
imports: [
BrowserModule,
HttpModule
],
La mejor manera es cambiar el decorador de su componente agregando Http en la matriz de proveedores como se muestra a continuación.
@Component({
selector: ''greetings-ac-app2'',
providers: [Http],
templateUrl: ''app/greetings-ac2.html'',
directives: [NgFor, NgModel, NgIf, FORM_DIRECTIVES],
pipes: []
})
Me enfrenté a este problema en mi código. Solo pongo este código en mi app.module.ts.
import { HttpModule } from ''@angular/http'';
@NgModule({
imports: [ BrowserModule, HttpModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Si tiene este error en sus pruebas, debe crear un servicio falso para todos los servicios:
Por ejemplo:
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; }
}
Y en beforeEach:
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [
Your1Service,
Your2Service,
{ provide: Your1Service, useClass: FakeYour1Service },
{ provide: Your2Service, useClass: FakeYour2Service }
]
}).compileComponents(); // compile template and css
}));
Solo agrego ambos en mi app.module.ts:
"import { HttpClientModule } from ''@angular/common/http'';
Y
import { HttpModule } from ''@angular/http'';"
Ahora funciona bien ... Y no olvides agregar
@NgModule => Imports:[] array
Solo incluya las siguientes bibliotecas:
import { HttpModule } from ''@angular/http'';
import { YourHttpTestService } from ''../services/httpTestService'';
e incluya la clase http en la sección de
providers
, de la siguiente manera:
@Component({
selector: ''...'',
templateUrl: ''./test.html'',
providers: [YourHttpTestService]
Todo lo que necesita hacer es incluir las siguientes bibliotecas en el recorrido app.module.ts y también incluirlo en sus importaciones:
import { HttpModule } from ''@angular/http'';
@NgModule({
imports: [ HttpModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
a partir de RC5 necesita importar el HttpModule de esta manera:
import { HttpModule } from ''@angular/http'';
luego incluya el HttpModule en la matriz de importaciones como mencionó anteriormente Günter.
porque fue solo en la sección de comentarios, repito la respuesta de Eric:
Tuve que incluir
HTTP_PROVIDERS
import { HttpModule } from ''@angular/http'';
paquete en su archivo module.ts y agréguelo a sus importaciones.
> = Angular 4.3
para el
HttpClientModule
introducido
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 usa (aquí, por ejemplo, el
AppModule
:
import { HttpModule } from ''@angular/http'';
@NgModule({
imports: [
BrowserModule,
FormsModule, // if used
HttpModule,
JsonpModule // if used
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
Importar el
HttpModule
es bastante similar a agregar
HTTP_PROVIDERS
en la versión anterior.
**
Almación simple: importe el HttpModule y HttpClientModule en su 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 { }