【发布时间】:2019-05-19 16:50:48
【问题描述】:
我正在寻找一种关于将一个组件用于多个服务的良好做法。
我有一个包含 7-8 个项目的侧导航菜单。单击它们应该会打开一个组件来编辑一个简单的表单,并将更新的数据发送到与所选导航项对应的服务。
// responses-routing..
const responsesRoutes: Routes = [
{
path: 'responses',
component: ResponsesComponent,
children: [
{
path: '',
component: ResponsesHomeComponent
},
{
path: ':type/:childUrl', <----- here
component: ResponsesEditComponent
}
]
}
];
我目前正在使用一个组件(ResponsesEditComponent)来
1) 从 url 中获取“type”和“childUrl”字段(此 url 使用路由器和侧导航菜单导航到。参数使用 activateRoute 提取)
2) 接受非常基本的用户输入
3) 进行服务调用以发送获取的输入。 使用服务的决定取决于从参数接收到的“type”和“childUrl”字段。
7-8 个菜单项有时会有子项,这些子项也将使用属于其父菜单项的服务。
如果我继续使用当前系统,它可能会工作,但我觉得应该有更好的方法来处理这个问题。向服务注入 8 个服务,并且必须在每次提交按钮单击时决定使用哪个服务,这并不是最好的方法。
我正在考虑
- 将一条路线分成8条路线
- 使用 8 个组件而不是 1 个组件,每个组件对应一个菜单项
- 为每个组件注入 1 个对应的服务
但这似乎只是重复的工作。
您介意解释一下您将如何处理这种情况,或者指出一个我可能不熟悉的相关概念吗?
干杯。
【问题讨论】:
-
我会使用
ngFor进行迭代的menu-component使用其自定义配置动态生成的menu-item-component列表。这样,您只需将一项服务导入menu-item-component,并且代码清晰。此外,如果此菜单仅“可见”几次,则应延迟加载menuComponent#Module
标签: angular angular6 frontend angular-routing angular7