Angular 2错误NullInjectorError:没有Http的提供程序

时间:2019-06-04 04:22:50

标签: angular typescript angular-providers

我正在尝试读取json github服务,但出现错误NullInjectorError:没有Http的提供程序!

我已经在整个代码中添加了提供程序,但是它不起作用,我不知道是什么原因导致了错误,但是我知道它在哪里发生,我需要一些可以帮助理解导致此错误的原因

import { Injectable } from '@angular/core';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule, Http, JsonpModule} from '@angular/http';
import { Observable} from 'rxjs'; 
import 'rxjs/add/operator/map';


@NgModule({

    imports: [     
          BrowserModule,
          HttpModule,
          JsonpModule,

        ]

  }) 

  @Injectable({
    providedIn:'root'
  })
 export class GithubService{
       constructor(private http:Http){

       }

       getUser(){
         const searchText ="js";
         const url = "http://api.github.com/search/users?q="+searchText;  
         this.http.get(url).subscribe(
           res=> {
             const data=res.json();
             console.log(data);
             return data;
           }
         )
       }
   }

我得到的错误:

AppComponent.html:7 ERROR NullInjectorError: StaticInjectorError(AppModule)[GithubService -> Http]: 
  StaticInjectorError(Platform: core)[GithubService -> Http]: 
    NullInjectorError: No provider for Http!

2 个答案:

答案 0 :(得分:6)

更新:Angular v6 +
从较早版本(Angular v2-v5)开始:HttpModule现在已过时,您需要用HttpClientModule替换它,否则也会收到错误消息。

在您的 app.module.ts 文件中更改这些

  1. 从“ @ angular / common / http”导入{HttpClientModule};
  2. 然后更新模块 imports [] 数组 HttpClientModule

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

答案 1 :(得分:0)

请按照以下2个步骤操作,

转到app.moudle.ts

  1. 添加javascript导入

    import { HttpModule, Http, JsonpModule} from '@angular/http';
    
  2. 添加@ngModule角度导入

    imports: [
      BrowserModule,
      AppRoutingModule,
      HttpModule
    ],