没有Http的提供者

时间:2017-01-23 11:56:33

标签: angular typescript

我在向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知道如何解决这个问题吗?

4 个答案:

答案 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   ]