在大多数情况下,覆盖现有的Spartacus效果很好。
最小努力量是
B2cStorefrontModule.withConfig({
cmsComponents: {
DefaultComponent: {
component: CustomComponent
}
},
大多数情况下,我这样做是因为我需要对html组件进行一些更改。 因此,我将其复制并粘贴到生成的customComponent中。 但大多数情况下,此html包含指令和管道,这些指令和管道需要向我的app.modules中添加其他模块。 有时,这可以很好地工作,但是在其他许多情况下,html不会呈现。
示例:SearchBoxComponent
当尝试使用html时出现浏览器错误:
Error: Template parse errors:
The pipe 'cxHighlight' could not be found ("
<a
*ngFor="let suggestion of result.suggestions"
[innerHTML]="[ERROR ->]suggestion | cxHighlight: searchInput.value"
[routerLink]="
{
"): ng:///AppModule/EmvSearchBoxComponent.html@49:21
在其他情况下,我可以通过包含引用此管道“ cxHighlight”的相应模块来解决此问题。在这种情况下为“ SearchBoxModule”。但是还是不好。
如何在我的项目中使用此管道? 也许有解决所有这些输入痛苦的更好方法?
答案 0 :(得分:0)
您在覆盖Spartacus中的组件的方式上是正确的。就像您注意到某些组件包含管道一样,因此您必须手动将其导入组件模块中。这只是Angular方式。
我们的大多数管道都在多个组件中重复使用,因此我们尝试使它们具有自己的模块以使导入更加容易。
您对cxHighlight
是正确的,有一个错误。管道在SearchBoxModule
中声明,但未导出,因此几乎无法导入。我将打开一个issue进行修复。