【问题标题】:Angular 5 - Can services replace custom event and property binding?Angular 5 - 服务可以替换自定义事件和属性绑定吗?
【发布时间】:2018-01-20 22:55:10
【问题描述】:

我正在学习新的 Angular 5,但我不知何故苦苦挣扎,无法 100% 理解用于在组件之间进行通信的自定义事件绑定(使用 @Input 和 @Output)。我知道服务可以做同样的功能,所以我在想,因为我不擅长使用@input 和@output,我不应该在它们上浪费更多的时间,直到我了解服务,所以我问如果可以,会影响我吗?还是可以完全取代它们?

【问题讨论】:

    标签: angular angular5


    【解决方案1】:

    服务是更通用的方法,您可以在任何组件之间使用它们,而无需它们完全相关(父/子)。自定义事件只能在相关组件之间使用,并且只能深入一层。因此,如果您有一个 Output 事件属性,它只会始终被直接父级捕获。它永远不会冒泡。 另一方面,在使用带有延迟加载组件的服务时需要小心,因为您最终可能会拥有同一服务的多个实例并出现意外行为。

    我相信使用服务或事件是一个偏好问题。只要您了解何时可以使用它们的限制以及它们各自的优点。这两种方法都有自己的位置。

    关于你的问题,我会说是的,你可以只使用服务。但我建议对事件进行更多调查,因为它们也有其优势。

    【讨论】:

      【解决方案2】:

      @input@output 用于在父组件和子组件之间进行单向或双向绑定的情况。

      如果您需要兄弟姐妹或祖父母和孙子女进行通信,那么具有一个或多个可以订阅的数据对象(作为可观察对象)以及允许数据修改的方法的“数据”服务是一种实用的解决方案.

      请参阅Plunkr demo 以获取数据服务和 3 个组件的示例 - 一个具有调用方法来更改数据的输入,而另一个 2 订阅该数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        • 2018-08-14
        • 1970-01-01
        • 2016-11-03
        相关资源
        最近更新 更多