NullInjectorError - 根独立组件未正确导入 HttpClientModule

Pat*_*ryk 15 angular-services angular angular-standalone-components

我有一个问题,我想重写我的应用程序代码并将主模块更改为 main.ts 中指向的主根独立组件。

一切正常,但我对 HttpClientModule 有问题。我在 root 中提供的一项服务中使用 HttpClient。在 MainComponent 中,我将 HttpClientModules 添加到导入数组中,但随后出现错误,表示我没有向应用程序提供 HttpClientMoudle,并且此服务无法使用它。

Uncaught (in promise): NullInjectorError: R3InjectorError(Standalone[MainComponent])[MainService -> MainService -> HttpClient -> HttpClient]:
NullInjectorError: No provider for HttpClient!
Run Code Online (Sandbox Code Playgroud)

当我将此 HttpClientModule 添加到 AppRoutingModule 时,我也将其添加到 main.ts 中

bootstrapApplication(MainComponent, {
  providers: [importProvidersFrom(RoutingModule)],
});
Run Code Online (Sandbox Code Playgroud)

效果很好,服务没有任何问题。

这是包含此问题的基本示例的代码,有人可以解释为什么导入到根独立组件在这种情况下不起作用,但导入到 RoutngModule 可以解决问题吗?

https://stackblitz.com/edit/angular-fhpbvm?file=src/main.ts

Pat*_*ryk 54

问题解决了。在这种情况下,我必须添加provideHttpClient()到 main.ts 文件中 bootstrapApplication() 函数中的提供程序数组。

import { provideHttpClient } from "@angular/common/http";

bootstrapApplication(AppComponent, {
  providers: [
    importProvidersFrom(AppRoutingModule),
    provideHttpClient()
  ]
})
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!你在哪里找到它?应该是 Angular 的一个重大通知,因为它破坏了一切 (3认同)