【发布时间】:2020-11-17 05:54:37
【问题描述】:
我有一个 Angular 应用程序,它具有按功能模块的架构。我有一个OrdersModule,其中包含ListOfOrders、DetailOfOrder 或EditOfOrder 等组件
所有这些组件都需要在构造函数中使用OrdersApiService,这基本上是一个使用REST API 后端通过HTTPS 提供CRUD 操作的简单服务。
OrdersModule 与一个名为 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);
}
有没有办法注入整个服务?
谢谢!
【问题讨论】:
标签: angular typescript angular-dependency-injection