我正在尝试读取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!
答案 0 :(得分:6)
更新:Angular v6 +
从较早版本(Angular v2-v5)开始:HttpModule现在已过时,您需要用HttpClientModule替换它,否则也会收到错误消息。
在您的 app.module.ts 文件中更改这些
然后更新模块 imports [] 数组 HttpClientModule
@NgModule({
imports: [
BrowserModule,
FormsModule, // if used
HttpClientModule,
],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
答案 1 :(得分:0)
请按照以下2个步骤操作,
转到app.moudle.ts
添加javascript导入
import { HttpModule, Http, JsonpModule} from '@angular/http';
添加@ngModule角度导入
imports: [
BrowserModule,
AppRoutingModule,
HttpModule
],