,在default-routing-config.ts文件中定义了默认的路由配置数据:someexamples:login:{paths:['login'],protected:false,authFlow:true,},register:{paths:['login/register'],protected:false,authFlow:true,},RoutingModule的forRoot方法:当webpack.require时,forRoot方法将被触发:RoutingModule:projects\core\src\routing\routing.module.ts-初始化可配置路由RoutingModule:projects\storefrontlib\cms-structure\routing\routing.module.ts-提供默认路由配置AppRoutingModule:projects\storefrontlib\router\app-routing.module.ts:如果在AppModule中不导入AppRoutingModule:Spartacus无法完成加载,这是意料之中的,因为NoproviderforRouter的报错信息很明确:注释AppRoutingModule后,来自@angular/router中的标准RouterModule,没有导入into根本没有AppModule。打印出SpartacusRouter.config的值:打印出所有这些通用配置:自定义路由路径:provideConfig({//用于e2e测试的自定义路由配置routing:{routes:{product:{paths:['product/jerry/:productCode/:name','product/:productCode'],paramsMapping:{name:'slug'},},},},}),自定义效果:http://localhost:4000/electro...Spartacus默认路由设置对应CommerceCloud后台CMS中页面的label字段:Angular通过forRoot方法提供了单例服务的实现方法。所谓SingletonService,就是在应用程序中只有一个实例的服务。在Angular中有两种方法可以使服务成为单例:将@Injectable()的providedIn属性设置为root从Angular6.0开始,创建单例服务的首选方法是在服务实现的@Injectable()装饰器上,将providedIn设置为root。这告诉AngularDI框架在应用程序的根目录提供服务实例。下面是SAP电商云SpartacusUI的单例服务示例:包含AppModule中的服务或者只由AppModule导入的模块在Angular6.0之前,我们需要在NgModule的providers数组中导入服务。@NgModule({...providers:[UserService],...})如果导入UserService的NgModule是根AppModule,那么UserService将是一个单例并且在整个应用程序中可用。虽然这种方法理论上是可行的,但是从Angular6.0开始,Angular推荐在服务实现文件上使用@Injectable()装饰器的providedIn属性。只有这样得到的Service才支持TreeShaking优化。