如何用我自己的自定义实现替换现有的斯巴达克斯外观?

How to replace an existing spartacus facade with my own custom implementation?

例如,可以轻松提供自定义适配器,因为我们有接口和默认实现。通过实现接口并在提供程序数组中提供自定义实现,我可以更改所有用法的实现。

不幸的是,外观层的服务没有接口,只有实现。

所以问题是我如何在 spartacus 中提供外观(例如 ActiveCartService)的自定义实现并确保 spartacus 框架中的用法也使用我的自定义实现?

假设您有 ActiveCartService:

的自定义实现
import { ActiveCartService } from '@spartacus/core';
import { Injectable } from '@angular/core';

@Injectable()
export class CustomActiveCartService extends ActiveCartService {
  /* .... */
}

请在某些模块(即 app.module 中)提供 ActiveCartService 的实现:

@NgModule({
  providers: [
    {
      provide: ActiveCartService,
      useClass: CustomActiveCartService,
    }
  ],
  /* ... */
})
export class AppModule {}