我有一个父组件,一个子组件和一个服务。父组件从服务订阅对象数据。子组件也需要侦听该数据更改。子组件使用@Input从其父组件获取数据还是让它也订阅服务哪个更好?
@Input(( 的用例
- 当我们只有一到两个层次结构时
- 当我们传递的值被其他组件使用时
服务用例
- 当我们有很多层次结构并且传递值变得有点困难时
- 当某些组件功能依赖于某些组件值时,该值可能是大约 10 个层次结构,因此在这种情况下,我们可以使用订阅服务,因此每当值发生变化时,我们都可以在组件中自动使用它
- 当一个值被多个组件使用时
如果服务以所需的格式提供确切的数据,那么直接订阅服务比依赖父组件更好。这将降低代码的整体复杂性,并提高性能。
在以下情况下,父组件可用作包装器或代理:
-
服务未以子组件所需的确切格式提供数据。
-
许多子组件依赖于服务提供的相同数据。
-
子组件需要从多个服务聚合的数据。
@Emmanuel Sayon 如果您不更新父级上的数据,则取决于用例,那么最好使用服务。 服务在嵌套层次结构中更加清晰