2017-09-15 91 views
0

我有2个不同类型的组件。它们都仅使用和含有HTML5帆布元件,但需要一个图表上示出不同类型的数据:后台应用程序逻辑的最佳解决方案?

  1. 组分A(只有以往的这些1)
  2. 组分B(0至这些4 )

两个组件都需要两个数据集中第一个数据项的dateTime,但最后一个项的dateTime来自它们各自的数据集。

A组分需要从成分B

目前,我不喜欢这样的第一个条目日期:

成分B是发现从自己的数据集的日期限制的方法。使用观察者模式&受试者,我通过服务广播返回的日期,并将其传送到组件A中。

虽然这个问题存在,但耦合突然变得非常紧密。我无法首先初始化组件A,因为它需要B先进行计算。理想情况下,这两个组件应该同时初始化并显示/共享他们的数据,并继续这样做。 (例如,如果用户在滚动一个图表,应该滚动所有其他部件也一样,等等。)

这就是为什么我想在这些组件的基础上增加了一个额外层。一个控制器,如果你愿意。

我无法弄清楚什么是最好不过:


  • 共享服务,可以采取外部数据作为输入?
  • 一种容器组件? (包含)
  • 另一种组分,组分C,即甲&乙是儿童?

  • 当我还是新角2,这是很难说哪种方法最适合未来的维护/发展?


我被吸向创建另一个正常组分作为母体,并具有该组件的发送和从它的儿童接收数据到/根据需要(A & B)。

我也是不确定的,什么是“最佳实践”,如果你可以只使用一个组件像一个空“逻辑壳”。我试过在这里和那里阅读,我发现很多,但我似乎无法得到我的问题的确切答案。在我能够理解所有这些知识并自己回答之前需要时间,所以我希望有人能给我一个帮助,谢谢。

PS:我要补充一点,我的角应用将在更大的应用程序中的儿童组成部分,将由其他一些父母补偿获得其数据。

回答

0

你为什么不把自己的逻辑加入服务? 您还可以通过将子服务注入到父服务中来设置服务层次结构。

如果你的逻辑不是UI /交互相关的,你应该把它放到可重用的服务中。如果您的逻辑与用户界面相关,则可以在A和B之间设置一个父组件作为中介(根据各自的输入/输出参数进行操作)。

无论您做什么,最好让关注点分开。

  • A和B都不需要关心其他需要输出的组件。 Angular具有输入/输出参数。

  • 不要把一些通用的日期时间计算的东西放入组件。通过服务使其可重用。

  • 通过引入界面和进样保持联接松动。

更新:

服务,才应使用注射构造函数的参数,所以你应该通过使用方法您的输入(或制定者,但毕竟是少的表现)。 要传递任意的JSON对象,您可以使用任何参数。但是,如果你的json遵循一定的结构,你可以定义一个接口。

public doStuff(input: any): any { } 

interface IMyDataContract { 
    dateField: string; 
} 

public doStuff(input: IMyDataContract): any { } 
+0

我的逻辑涉及操纵/搜索一个JSON数据集,以吸取HTML5画布元件中的数据。我应该能够使用服务,但是我无法将JSON数据作为输入传递给服务。 非常感谢您的回答,我将再次尝试服务解决方案。 – PDAWG

+0

只需定义一个方法和参数。你的服务应该只包含注射构造参数 – mbnx

+0

我更新了答案。 – mbnx

相关问题