我正在尝试获取自定义组件的组件数据。
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!
谁能帮我解决这个问题吗?
当您尝试在 app.component.html 中添加自定义组件时,会发生这种情况,这不是必需的,因为这些组件是通过 ConfigModule 映射的。所以把app.component.html中自定义组件的标签去掉就可以了。
如果在构造函数中使用
CmsComponentData
,则必须 provided。这就是 Spartacus 在页面上放置 CMS 组件时所做的事情;动态创建组件时,会在该组件的注入器中组合并提供数据对象。
CmsComponentData
是一个抽象类,因此如果您添加组件而不注入具体类,您将面临此错误。
我们最近看到一位想要将组件分配给路线的开发人员。在这个示例中,Angular 将尝试从 DI 系统获取具体类,但 Spartacus 中没有任何内容,除非您自己执行此操作。
您能解决上述问题吗?