Angular 角度服务零?
我在angular 7中创建了一个项目,并从以前的angular项目中复制了一些代码。首先,我做了一个非常简单的服务:Angular 角度服务零?,angular,Angular,我在angular 7中创建了一个项目,并从以前的angular项目中复制了一些代码。首先,我做了一个非常简单的服务: import { Injectable } from '@angular/core'; import { environment } from '../environments/environment'; import { HttpClient,HttpErrorResponse} from '@angular/common/http'; import { Observabl
import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';
import { HttpClient,HttpErrorResponse} from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private httpClient: HttpClient) {
}
getValues():Observable<string[]>{
var url = `${environment.apiUrl}/api/values`;
return this.httpClient.get<string[]>(url);
}
getTest():Observable<string[]>{
var url = `${environment.apiUrl}/api/test`;
return this.httpClient.get<string[]>(url);
}
}
是否该.apiService为空?我是不是遗漏了什么?我可以看到我的旧项目中没有任何导入或声明
谢谢你的帮助
错误:
错误错误:未捕获(承诺中):错误:StaticInjectorError(AppModule)[HttpClient]:
StaticInjectorError(平台:核心)[HttpClient]:
NullInjectorError:HttpClient没有提供程序!
错误:StaticInjectorError(AppModule)[HttpClient]:
StaticInjectorError(平台:核心)[HttpClient]:
NullInjectorError:HttpClient没有提供程序!
在NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get(core.js:8896)
在resolveToken(core.js:9141)
在tryResolveToken(core.js:9085)
在StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get(core.js:8982)
在resolveToken(core.js:9141)
在tryResolveToken(core.js:9085)
在StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get(core.js:8982)
在ResolvingModuleDep(core.js:21218)
在NgModuleRef.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef.get(core.js:21907)
仅在InjectorOnly(core.js:1774)
在resolvePromise(zone.js:831)
在resolvePromise(zone.js:788)
在zone.js:892
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask(zone.js:423)
位于Object.onInvokeTask(core.js:17290)
在ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask(zone.js:422)
在Zone.push../node_modules/Zone.js/dist/Zone.js.Zone.runTask(Zone.js:195)
在drainMicroTaskQueue(zone.js:601)
您在控制台中看到任何错误吗?
url
变量在服务中来自何处?我认为url无关紧要,函数从未被调用,因为apiService对象为null:(您是否在app.module.ts上导入了httpModule?根据错误消息,您可能忘记将HttpClientModule
添加到应用程序模块。这正是我得到的:D谢谢。您能留下答案吗?
import { Component, Inject, OnInit } from '@angular/core';
import { ApiService } from '../../api.service';
@Component({
templateUrl: 'fleet.component.html'
})
export class FleetComponent implements OnInit {
constructor(private apiService: ApiService) {}
ngOnInit(): void {
this.apiService.getValues()
.subscribe(
result => {
// Handle result
console.log(result)
},
error => {
alert(error);
},
() => {
// 'onCompleted' callback.
// No errors, route to new page here
}
);
}
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
// import HttpClientModule after BrowserModule.
HttpClientModule,
],
declarations: [
AppComponent,
],
bootstrap: [ AppComponent ]
})
export class AppModule {}