我在向Angular 2应用程序中注入HTTP时遇到了问题。几天前它工作正常,但现在我有错误:
原始例外:没有Http的提供者!
有main.ts
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
import { LoginModule } from "./login/login.module";
import { Http } from "@angular/http";
platformBrowserDynamic().bootstrapModule(LoginModule);
登录module.ts
@NgModule({
imports: [BrowserModule, FormsModule], // external modules for all components
declarations: [LoginComponent], // component which belong to this module
bootstrap: [LoginComponent] // component on load
})
export class LoginModule {
}
最后在LoginModule中使用LoginComponent
import { Component } from '@angular/core';
import { AccountService } from "../data/account.service";
import { Http, Response, RequestOptions, Headers } from '@angular/http';
import { LocalStorage } from '../storage/storage';
@Component({
selector: 'tp-login',
templateUrl: `app/login/login.html`,
styleUrls: ['app/login/login.css'],
providers: [AccountService, LocalStorage]
})
LoginComponent中有关于没有HttpProvider的异常。 Somone知道如何解决这个问题吗?
答案 0 :(得分:11)
很好地将所有模块依赖项封装到@ngModule
属性
import { BrowserModule } from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot(appRoutes)
],
providers: [],
bootstrap: [AppComponent]
})
因此,您可以确定当您的模块将作为子依赖项包含时 - 所有依赖项将在之前解决。
答案 1 :(得分:4)
在应用模块中。
从HttpModule
导入Http
和@angular/http
:
import {HttpModule, RequestOptions, XHRBackend, Http} from "@angular/http";
在HttpModule
声明中添加@NgModule
到导入属性:
imports: [
HttpModule,
]
在Http
Providers
属性中提供@NgModule
providers: [
{provide: Http, useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new Http(backend, defaultOptions),rations
deps: [XHRBackend, RequestOptions]}
],
答案 2 :(得分:3)
首先,从" ./ login / login.module&#34 ;;中删除import {LoginModule}。在你的主页中,它并没有解决你的问题。
尝试将 HttpModule 导入您的登录模块文件或根模块:
import { HttpModule } from '@angular/http';
@NgModule({
imports: [HttpModule, BrowserModule, FormsModule],
declarations: [LoginComponent], // component which belong to this module
bootstrap: [LoginComponent] // component on load
})
export class LoginModule {
}

答案 3 :(得分:0)
在HttpModule
服务文件中添加component/
:
import { Http , HttpModule} from '@angular/http';
然后在HttpModule
中添加app.module.ts
:
import { Http ,HttpModule} from '@angular/http';
并在ngModules中导入
imports: [
BrowserModule,
HttpModule ]