角度-是否已完全创建多个使用的组件?

时间:2018-08-07 10:46:09

标签: javascript angular typescript

我对Angular组件有一个小疑问。

我经常读到,您应该只使用组件来显示数据并与用户交互,对于您的“业务逻辑”,您应该首选服务。

所以我的问题如下(仅作为示例):

比方说,我已经制作了一个通过拖放上传文件的组件。我有逻辑从拖放中获取数据并将其存储在该组件打字稿文件中的数组(也许还有更多其他函数)中。

现在,当我在一个父组件中两次包含此组件时(例如,因为我需要两个上载字段),它们是引用相同的对象还是该组件内部的程序逻辑为每个实例创建了两次?

如果是这样,那么我应该尝试在单例服务中保留尽可能多的共享程序逻辑,这样它们就只能在运行时创建一次,而不会浪费内存等,不是吗?

希望有人明白我的意思:)。

提前谢谢!

3 个答案:

答案 0 :(得分:3)

如果将组件两次添加到父级,则将创建两个不同的实例(每个实例都具有唯一的作用域)。

但是,您应该将上传/处理逻辑抽象到服务中。在模块中提供该服务以使其成为单例。如果要每个组件实例,则在组件内部提供它。

答案 1 :(得分:2)

如果您在模板中创建两个相似的组件,例如:

<app cumstom></app custom>
<app cumstom></app custom>

这将导致创建两个都有各自的模型(数据)和视图的对象。他们彼此一无所知。

如果您希望他们进行通信,通常可以使用一种服务,您可以将其注入两个组件中,以便它们可以共享相同的数据。如果您的ngmodule中提供的服务仅创建一次(因此是单例)。

答案 2 :(得分:0)

好吧,我认为您需要的是一个智能组件,您可以在其中放置两个上传组件,并将服务逻辑注入该智能组件中。智能组件将负责提供两个组件之间通用逻辑的桥梁。