Angular 4 错误:没有 HttpClient 的提供者 [英] Angular 4 Error: No provider for HttpClient
本文介绍了Angular 4 错误:没有 HttpClient 的提供者的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 CLI 启动一个新的 Angular 项目,但遇到了一个没有提供程序的 HttpClient
错误.
I am starting a new angular project with the CLI and am running into a no provider for HttpClient
error.
我已将 HttpClientModule
添加到我的模块导入中,这似乎是这种情况下的常见罪魁祸首.除此之外没有在网上找到很多,所以我不确定问题可能是什么.
I have added HttpClientModule
to my module imports which seems to be the usual culprit in this scenario. Not finding a lot online other than that so I am not sure what the issue may be.
我的 app.module.ts
my app.module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
和我的服务
@Injectable()
export class FlexSearchService {
constructor(private http: HttpClient) {}
getSavedSearchResult(index: string, queryName: string, query: string ): Observable<any> {
const url = `${environment.flexUrl}/${index}/search`;
const item = new SearchQuery({queryName: queryName, variables: {q: query}});
return this.http.post(url, item);
}
}
和 ng 版本给出以下输出
and ng version gives the following output
@angular/cli: 1.4.2
node: 6.9.4
os: darwin x64
@angular/animations: 4.4.4
@angular/common: 4.4.4
@angular/compiler: 4.4.4
@angular/core: 4.4.4
@angular/forms: 4.4.4
@angular/http: 4.4.4
@angular/platform-browser: 4.4.4
@angular/platform-browser-dynamic: 4.4.4
@angular/router: 4.4.4
@angular/cli: 1.4.2
@angular/compiler-cli: 4.4.4
@angular/language-service: 4.4.4
typescript: 2.3.4
我的 tsconfig
my tsconfig
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
我的测试
import { TestBed, inject } from '@angular/core/testing';
import { HttpClientModule } from '@angular/common/http';
import { FlexSearchService } from './flex-search.service';
describe('FlexSearchService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [FlexSearchService, HttpClientModule]
});
});
it('should be created', inject([FlexSearchService], (service: FlexSearchService) => {
expect(service).toBeTruthy();
}));
非常感谢任何帮助!
推荐答案
在你的测试中
TestBed.configureTestingModule({
providers: [FlexSearchService, HttpClientModule]
});
应该是
TestBed.configureTestingModule({
imports: [HttpClientModule],
providers: [FlexSearchService]
});
甚至更好(如果你想模拟请求):
or even better (if you want to mock request):
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [FlexSearchService]
});
这篇关于Angular 4 错误:没有 HttpClient 的提供者的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文