我已经在angular 7中创建了一个项目,并且从以前的angular项目中复制了一些代码。首先,我提供一个非常简单的服务:
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);
}
}
然后我只需从组件中调用它即可
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
}
);
}
}
是否this.apiService为null?我在这里想念什么吗?我可以看到我的旧项目中没有任何导入或声明。
感谢所有帮助
错误:
ERROR错误:未捕获(承诺):错误: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) 在resolveNgModuleDep(core.js:21218) 在NgModuleRef_.push ../ node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get(core.js:21907) 在injectInjectorOnly(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) 在排水微任务队列(zone.js:601)
答案 0 :(得分:0)
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 {}