是否可以覆写Spartacus的Ngrx Effect?如何禁用ProductReviewEffects默认逻辑?
解决方法
要禁用Spartacus默认的POST_PRODUCT_REVIEW_SUCCESS对应全局提示逻辑,可通过以下两种方案实现,按需选择即可:
方案一:全量替换默认ProductReviewEffects(推荐,符合Spartacus扩展规范)
Spartacus支持通过配置直接禁用指定的默认Effect类,你只需要把不需要的默认Effect类排除,再注册自己的自定义Effect即可:
- 在你的自定义模块中禁用默认
ProductReviewEffects
import { NgModule } from '@angular/core'; import { StorefrontModule } from '@spartacus/storefront'; import { ProductReviewEffects } from '@spartacus/product'; @NgModule({ imports: [ StorefrontModule.withConfig({ effects: { // 禁用默认的评论Effect类 disable: [ProductReviewEffects] } }) ] }) export class YourCustomFeatureModule {}
- 注册你自己编写的自定义Effect
如果默认ProductReviewEffects里还有其他逻辑你需要保留,可以把默认类里除了要删除的showGlobalMessageOnPostProductReviewSuccess$之外的代码都复制到你的自定义Effect类中,再注册即可:
import { EffectsModule } from '@ngrx/effects'; import { YourCustomProductReviewEffects } from './custom-product-review.effects'; @NgModule({ imports: [ // 保留之前的禁用配置 StorefrontModule.withConfig({ effects: { disable: [ProductReviewEffects] } }), // 注册你的自定义Effect EffectsModule.forFeature([YourCustomProductReviewEffects]) ] }) export class YourCustomFeatureModule {}
方案二:仅屏蔽对应全局提示(无需替换Effect,适合只需要取消提示的场景)
如果你不需要改动其他评论相关逻辑,只是不想显示提交成功的全局提示,直接覆写对应i18n翻译值即可:
在你的i18n资源配置里,把productReview.thankYouForReview的取值设为空字符串,提示就不会显示出来。
内容的提问来源于stack exchange,提问作者tanjadab
相关产品推荐
相关产品推荐

