我有一个 Angular 应用程序,它具有每个功能模块的架构。我有一个OrdersModule
类似的组件ListOfOrders
,DetailOfOrder
或者EditOfOrder
所有这些组件都需要OrdersApiService
在构造函数中,它基本上是一个简单的服务,它使用 REST API 后端通过 HTTPS 提供 CRUD 操作。
OrdersModule
与一个名为Order的实体一起工作
我收到了一个功能请求,我将在其中实施新实体,称为Draft Order。实际上, Draft Order和Order之间没有区别(它们包含完全相同的属性,它们以相同的方式创建)但它们必须以不同的方式存储,它们具有不同的 API 端点(myApi.com/orders
vs myApi.com/draft-orders
)
最简单的方法(从花费时间的角度来看)是将订单复制/粘贴到新模块。但是,我很想避免代码重复,所以这种方法应该对我有用:
{
path: 'orders',
loadChildren: () => import('./orders/orders.module').then(m => m.OrdersModule)
},
{
path: 'draft-orders',
loadChildren: () => import('./orders/orders.module').then(m => m.OrdersModule)
},
现在我需要根据路由向组件注入不同的服务。我知道解决方法
{
path: 'orders',
loadChildren: () => import('./orders/orders.module').then(m => m.OrdersModule),
data: {
type: 'orders'
}
},
{
path: 'draft-orders',
loadChildren: () => import('./orders/orders.module').then(m => m.OrdersModule),
data: {
type: 'draft-orders'
}
},
并在服务中使用ActivatedRoute:
constructor(
private route: ActivatedRoute,
) {
this.type = this.route.snapshot.data['type'];
}
getOrders() {
return this.http.get('myApi.com/' + this.type);
}
有没有解决方案如何注入整个服务?
谢谢!