SAP Spartacus NullInjectorError:没有 CmsComponentData 提供程序

问题描述 投票:0回答:3

我正在尝试获取自定义组件的组件数据。

private componentData$: Observable<CmsBannerCarouselComponent> = this.componentData.data$.pipe(
    filter(Boolean),
    tap((d: CmsBannerCarouselComponent) => (console.log("++++++++++++++++++++++++++",d)))
  );

我收到以下错误:

core.js:4197 ERROR NullInjectorError: R3InjectorError(AppModule)[CmsComponentData 
    -> CmsComponentData -> CmsComponentData]: 
    NullInjectorError: No provider for CmsComponentData!

谁能帮我解决这个问题吗?

spartacus-storefront
3个回答
3
投票

当您尝试在 app.component.html 中添加自定义组件时,会发生这种情况,这不是必需的,因为这些组件是通过 ConfigModule 映射的。所以把app.component.html中自定义组件的标签去掉就可以了。


2
投票

如果在构造函数中使用

CmsComponentData
,则必须 provided。这就是 Spartacus 在页面上放置 CMS 组件时所做的事情;动态创建组件时,会在该组件的注入器中组合并提供数据对象。

CmsComponentData
是一个抽象类,因此如果您添加组件而不注入具体类,您将面临此错误。

我们最近看到一位想要将组件分配给路线的开发人员。在这个示例中,Angular 将尝试从 DI 系统获取具体类,但 Spartacus 中没有任何内容,除非您自己执行此操作。


-1
投票

您能解决上述问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.