gpt4 book ai didi

angular8 - 角 8 : No provider for HttpClient in service

转载 作者:行者123 更新时间:2023-12-04 13:18:37 25 4
gpt4 key购买 nike

为了将 Angular 5 项目迁移到 Angular 8,我使用 Angular CLI 创建了一个空项目,并在我的新项目结构中复制了我的模块、组件和服务。
该项目已构建,但在执行时,我收到了经典消息“没有服务中的 HttpClient 提供程序”:

    ERROR NullInjectorError: StaticInjectorError(AppModule)[TimeService -> HttpClient]: 
StaticInjectorError(Platform: core)[TimeService -> HttpClient]:
NullInjectorError: No provider for HttpClient!
at NullInjector.get (http://localhost:4200/vendor.js:50573:27)
at resolveToken (http://localhost:4200/vendor.js:52359:24)
at tryResolveToken (http://localhost:4200/vendor.js:52285:16)
at StaticInjector.get (http://localhost:4200/vendor.js:52148:20)
at resolveToken (http://localhost:4200/vendor.js:52359:24)
at tryResolveToken (http://localhost:4200/vendor.js:52285:16)
at StaticInjector.get (http://localhost:4200/vendor.js:52148:20)
at resolveNgModuleDep (http://localhost:4200/vendor.js:76198:29)
at _createClass (http://localhost:4200/vendor.js:76275:32)
at _createProviderInstance (http://localhost:4200/vendor.js:76231:26)

我觉得我的 app.module.ts 没问题:我正在导入 HttpClientModule 并且我已经把它放在 @NgModule 导入中,就在 BrowserModule 之后。
@NgModule({
declarations: [AppComponent,DelegationsComponent],
imports: [BrowserModule,
HttpClientModule,
GlobalModule.forRoot(),
AuthenticationModule,
DelegationModule,
routing,
FormsModule,
ReactiveFormsModule,
BrowserAnimationsModule,
ButtonModule, TableModule, DialogModule, DropdownModule, ToastModule, TabViewModule, InputTextModule, AutoCompleteModule, TooltipModule, CheckboxModule, OverlayPanelModule, MultiSelectModule, CalendarModule ],
providers: [APP_ROUTER_PROVIDERS, {provide: APP_BASE_HREF, useValue: getBaseHref()}],
bootstrap: [AppComponent]
})

错误似乎在 TimeService 中。在这个服务中,HttpClient 被导入并注入(inject)到构造函数中。
import {HttpClient} from "@angular/common/http";

@Injectable()
export class TimeService extends BaseService {
constructor(private http: HttpClient)

然后,将 TimeService 注入(inject)到 DelegationsComponent 中。
import {TimeService} from "utils/time.service";
@Component({
moduleId: __moduleName,
selector: 'delegations',
templateUrl: './delegations.component.html'
})
export class DelegationsComponent implements OnInit, OnDestroy {
constructor(private timeService: TimeService)

您可以在我的 app.module.ts 声明中看到 DelegationsComponent。

任何的想法 ?
谢谢

编辑:
通过尝试在一个小例子上重现问题,我找到了原因:time.service.ts 不在我的 angular 应用程序中,而是在外面的文件夹中,因为我与其他两个 angular 应用程序共享它。由于我的应用程序的 package.json ,我将它包含在内:
"utils": "file:../../../../../utils"

所以 time.service.ts 以 node_modules/utils 结尾。如果我把它放在 src/app 目录中,它就可以工作。知道为什么它不能这样工作,以及我如何在几个角度应用程序之间共享服务?

最佳答案

错误=>

ERROR NullInjectorError: StaticInjectorError(AppModule)[TimeService -> HttpClient]: 
StaticInjectorError(Platform: core)[TimeService -> HttpClient]:

以下解决方案对我有用,我使用的是 Angular version-9

=> 需要加 => import {HttpClientModule}来自 '@angular/common/http';app.module.ts并且也在 [import] 数组中。

关于angular8 - 角 8 : No provider for HttpClient in service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57036676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com