【问题标题】:Angular - Share Data Between Sibling Components Without Sharing Between InstancesAngular - 在兄弟组件之间共享数据而不在实例之间共享
【发布时间】:2018-02-17 20:39:20
【问题描述】:

我正在编写一个包含三个独立组件的模块。这些组件协同工作,因此使用服务来帮助跟踪所有内容是有意义的。

|    
|- wrapper.component.ts
|
|- wrapper.service.ts
|
|- wrapper.module.ts
|
|- child-component1.component.ts
|
|- child-component2.component.ts

问题在于,如果您在应用程序中创建基础组件的两个实例,则服务会在组件的两个实例之间共享数据。

在兄弟之间共享数据而不在组件的所有实例之间共享数据的正确方法是什么?

【问题讨论】:

    标签: angular service components instantiation


    【解决方案1】:

    在组件级别提供服务:

    @Component({
        ....
        providers: [myService]
    })
    

    这样,服务实例在组件及其子组件之间共享,而不是组件的其他实例。

    【讨论】:

    • 谢谢,维加!这就是我一直在寻找但在谷歌上找不到的东西。我会试一试!那么,我需要在每个组件中包含服务吗?
    • 是的,每一个。并且不要在模块级别提供。
    【解决方案2】:
    1. 您可以使用事件发射器从子 1 组件向父组件发出事件
    2. 使用从子 1 发出的数据更改从父到子 2 的输入
    3. 访问孩子 2 的 ngOnChange 中的数据

    【讨论】:

    • Angular 组件似乎与所有实例共享状态。我做了一个演示来显示这个问题。我的文件上传更新了最顶层的实例,而不是我单击的实例。谢谢stackblitz.com/edit/…
    猜你喜欢
    • 2021-01-04
    • 2017-10-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2017-09-14
    • 2017-10-11
    • 2018-04-05
    • 2020-12-12
    相关资源
    最近更新 更多