Typescript 角度无法注入HttpClient获取';Can';t解析CustomerService的所有参数';错误
我有一个Typescript 角度无法注入HttpClient获取';Can';t解析CustomerService的所有参数';错误,typescript,angular2-routing,injectable,Typescript,Angular2 Routing,Injectable,我有一个customerService,我试图在这里注入httpClient。错误发生在我注释的那一行。//错误发生在这一行。。在我尝试将httpClient注入我的服务之前,一切都正常 错误消息是: `compiler.js:485 Uncaught Error: Can't resolve all parameters for CustomerService: (?). at syntaxError (compiler.js:485) at CompileMetadataRe
customerService
,我试图在这里注入httpClient
。错误发生在我注释的那一行。//错误发生在这一行。
。在我尝试将httpClient注入我的服务之前,一切都正常
错误消息是:
`compiler.js:485 Uncaught Error: Can't resolve all parameters for CustomerService: (?).
at syntaxError (compiler.js:485)
at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15700)
at CompileMetadataResolver._getTypeMetadata (compiler.js:15535)
at CompileMetadataResolver._getInjectableMetadata (compiler.js:15515)
at CompileMetadataResolver.getProviderMetadata (compiler.js:15875)
at compiler.js:15786
at Array.forEach (<anonymous>)
at CompileMetadataResolver._getProvidersMetadata (compiler.js:15746)
at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15314)
at CompileMetadataResolver.getNgModuleSummary
这是我的共享模块
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { HttpClientModule } from "@angular/common/http";
import { AppMaterialModule } from "./app.material.module";
import { FlexLayoutModule } from "@angular/flex-layout";
import { HttpClientProvider } from "../services";
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
HttpClientModule ,
AppMaterialModule
],
providers: [
],
exports: [
AppMaterialModule,
FlexLayoutModule,
FormsModule,
HttpClientModule
]
})
export class SharedModule {
}
您可能遵循了http的旧指南/教程 使用
HttpClient
时,您需要提供要返回的类型,实际上,您不需要.map
数据,从而使代码变得更短
get(email: string): Observable<any> {
const uri = `${this.baseUri}/customer/${email}`;
//add your model here something like
//return this.http.get<Customer>(uri);
return this.http.get<any>(uri);
}
get(电子邮件:字符串):可观察
getTextFile(文件名:string){
//get()返回的Observable类型为Observable
//因为指定了文本响应。
//不需要为get()传递类型参数。
返回此.http.get(文件名,{responseType:'text'})
.烟斗(
轻触(//记录结果或错误
data=>this.log(文件名,数据),
error=>this.logError(文件名,错误)
)
);
}
我在这里找到了答案:
我从我的多面体上移除了反射,愚蠢的我
谢谢大家的帮助 创建新文件或添加到现有文件polyfills.ts
import 'core-js/es7/reflect';
包括到webpack.config
module.exports = {
mode: 'production',
devtool: 'source-map',
entry: {
'app': './ClientApp/main.ts',
'polyfills': './ClientApp/polyfills.ts'
},...
这对我有帮助你能提供你如何使用客户服务吗?@brijmcq我甚至没有在任何地方使用这个。我的申请书快到期了。但编译器中没有错误。您是否尝试重新启动ng serve?@brijmcq im使用此应用程序的webpack。然后尝试重新启动您的webpack服务器,类似这样的错误可能来自任何地方根据您的建议,我在get返回此.http.get(uri)中添加了any的返回类型代码>遇到相同的问题。
getTextFile(filename: string) {
// The Observable returned by get() is of type Observable<string>
// because a text response was specified.
// There's no need to pass a <string> type parameter to get().
return this.http.get(filename, {responseType: 'text'})
.pipe(
tap( // Log the result or error
data => this.log(filename, data),
error => this.logError(filename, error)
)
);
}
import 'core-js/es7/reflect';
module.exports = {
mode: 'production',
devtool: 'source-map',
entry: {
'app': './ClientApp/main.ts',
'polyfills': './ClientApp/polyfills.ts'
},...