如何在角度组件之间共享功能?

时间:2018-05-29 17:31:47

标签: angular

我有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个组件之间的常用方法?

我认为该服务是一种解决方案,但不能推荐,因为它们不用于处理组件逻辑。

1 个答案:

答案 0 :(得分:9)

  

我认为该服务将是一种解决方案,但不值得推荐   因为它们不习惯处理组件逻辑。?

Angular将组件与服务区分开来,以增加模块化和可重用性。 的 and It's Good Practice to Delegate complex component logic to services

  

来自 Angular样式指南
仅限制组件中的逻辑   视图所需的。应该委托所有其他逻辑   服务。

     

将可重用逻辑移动到服务并保持组件简单   专注于他们的预期目的。

     

为什么呢?放置在a中时,逻辑可以被多个组件重用   服务并通过功能公开。

     

为什么呢?服务中的逻辑可以更容易地在单元测试中被隔离,   而组件中的调用逻辑很容易被模拟。

     

为什么呢?删除依赖项并隐藏实现细节   成分

     

为什么呢?保持组件纤薄,修剪和聚焦。

在Angular中使用服务还可以确保您没有违反 DRY SRP 软件开发原则,对于您的方案最好解决方案是使用服务