Ошибка Angular 2 NullInjectorError: Нет провайдера для Http - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь прочитать службу 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 ]

6 голосов
/ 04 июня 2019

Обновление: Angular v6 +
Из более старых версий (Angular v2 - v5): HttpModule теперь устарел, и вам нужно заменить его на HttpClientModule, иначе вы также получите ошибку.

В вашем файле app.module.ts измените эти

  1. import {HttpClientModule} из "@ angular / common / http";
  2. Затем обновите модули import [] array HttpClientModule

       @NgModule({
            imports: [
                BrowserModule,
                FormsModule, // if used
                HttpClientModule,
            ],
            declarations: [ AppComponent ],
            bootstrap:    [ AppComponent ]
        })
    
0 голосов
/ 04 июня 2019

Пожалуйста, следуйте ниже 2 шага,

Перейти к app.moudle.ts

  1. Добавить импорт JavaScript

    import { HttpModule, Http, JsonpModule} from '@angular/http';
    
  2. Добавить @ngModule Угловой импорт

    imports: [
      BrowserModule,
      AppRoutingModule,
      HttpModule
    ],
    
...