我有3种类型的组件来处理表单。他们是:
identical(myDT[, previousValue[seq_along(solution)]], solution)
[1] TRUE
EntityFormEditComponent //To Edit
他们有一个共同的父母EntityFormViewComponent // To Visualize
,他们在自己之间分享基本逻辑。
当我创建一个新实体时,该实体从基本表单组件扩展,如下所示:
EntityFormCreateComponent // To Create
EntityFormComponent
UserFormEditComponent extends from EntityFormEditComponent
这种组织项目的方式产生了一个问题:
我如何分享这3个组件之间的常用方法?
我认为该服务是一种解决方案,但不能推荐,因为它们不用于处理组件逻辑。
答案 0 :(得分:9)
我认为该服务将是一种解决方案,但不值得推荐 因为它们不习惯处理组件逻辑。?
Angular将组件与服务区分开来,以增加模块化和可重用性。 的 and It's Good Practice to Delegate complex component logic to services 强>
来自 Angular样式指南
仅限制组件中的逻辑 视图所需的。应该委托所有其他逻辑 服务。将可重用逻辑移动到服务并保持组件简单 专注于他们的预期目的。
为什么呢?放置在a中时,逻辑可以被多个组件重用 服务并通过功能公开。
为什么呢?服务中的逻辑可以更容易地在单元测试中被隔离, 而组件中的调用逻辑很容易被模拟。
为什么呢?删除依赖项并隐藏实现细节 成分
为什么呢?保持组件纤薄,修剪和聚焦。