如下图高亮区域所示:
root
config
包含了敲击多少个字符后,触发 product 搜索的配置:
import { Injectable } from '@angular/core'; import { Config } from '@spartacus/core'; @Injectable({ providedIn: 'root', useExisting: Config, }) export abstract class QuickOrderConfig { quickOrder?: { searchForm?: { displayProductImages: boolean; maxProducts: number; minCharactersBeforeRequest: number; }; }; } declare module '@spartacus/core' { interface Config extends QuickOrderConfig {} }
这里有一个最佳实践,定义一个 abstract class,包含了配置的数据结构,再使用 declare module,填充 @spartacus/core 里定义的 Config 接口。
在 root 文件夹下的 module,包含了 CMS 和路由配置:
路由实现:
export const defaultQuickOrderRoutingConfig: RoutingConfig = { routing: { routes: { quickOrder: { paths: ['my-account/quick-order'], }, }, }, };
CMS mapping 实现:
export function defaultQuickOrderComponentsConfig() { const config = { featureModules: { [CART_QUICK_ORDER_FEATURE]: { cmsComponents: ['QuickOrderComponent', 'CartQuickOrderFormComponent'], }, // by default core is bundled together with components [CART_QUICK_ORDER_CORE_FEATURE]: CART_QUICK_ORDER_FEATURE, }, }; return config; }