对于Angular2应用程序,组件是从父级接收数据更好,还是让组件自包含更好

对于Angular2应用程序,组件是从父级接收数据更好,还是让组件自包含更好,angular,angular2-services,angular2-components,Angular,Angular2 Services,Angular2 Components,Angular2能够创建包含组件、服务、模型等的模块。基本上是通过应用程序的共享模块提供的自包含单元 在我开始开发的应用程序中,我的页面正在成为组件的集合。页面本身是否应该负责检索页面所需的所有数据,然后将数据作为需要数据的组件的属性传递?或者,如果用于检索数据的服务是模块的一部分,那么让每个组件负责使用模块方法检索其数据是否更好?或者,使用任何适合特定情况的方法 如果正确的答案是使用适合给定情况的任何方法,那么您将使用什么准则来确定父页面是否提供数据,或者是否允许子组件自包含并检索自己的数据

Angular2能够创建包含组件、服务、模型等的模块。基本上是通过应用程序的共享模块提供的自包含单元

在我开始开发的应用程序中,我的页面正在成为组件的集合。页面本身是否应该负责检索页面所需的所有数据,然后将数据作为需要数据的组件的属性传递?或者,如果用于检索数据的服务是模块的一部分,那么让每个组件负责使用模块方法检索其数据是否更好?或者,使用任何适合特定情况的方法

如果正确的答案是使用适合给定情况的任何方法,那么您将使用什么准则来确定父页面是否提供数据,或者是否允许子组件自包含并检索自己的数据


感谢您的输入。

将应用程序拆分为模块这有助于延迟加载,并从DDD聚合根的角度考虑它是一个良好的开端

然后,在一个模块中,您可以使用helper服务通过Http服务检索数据,并可以将它们注入路由组件中

路由组件充当MVC控制器,从服务中获取数据,从路由中获取参数,通常将内容连接在一起

然后,您可以使用智能或哑组件

如果一个组件有一个伴随服务/与其他东西交互,那么它就是一个智能组件,被认为是不纯净的

而哑组件仅通过
@input()
获取其输入,并仅通过
@Output()
发送事件

智能组件通常由多个哑组件组成。
因为哑组件更容易测试。

很难给你一个硬性和快速的规则,但作为一般规则,最好让一个父组件,即“智能”组件获取数据并将其传递给子组件(ren)。它使孩子们更容易在整个应用程序中测试和重用。它还使数据如何在应用程序中流动变得更加明显(在一个方向上,从上到下,这是Angular2+中推荐的方式)。在Google上搜索“smart vs dumb components”(智能组件vs dumb components)以获取有关此模式的更多信息,此模式不特定于Angular(React非常流行)。在有意义的地方使用父子关系:CustomerListComponent应向CustomerListItemComponent提供数据。AppComponent是否应向CustomerListComponent提供数据?可能不会。谢谢你的回复。DDD聚合根是什么意思?