【问题标题】:how can we share data btw components across modules in angular4?我们如何在 Angular 4 中跨模块的组件之间共享数据?
【发布时间】:2018-01-03 10:37:06
【问题描述】:

我正在尝试在两个不同模块的组件之间共享数据。我正在使用共享服务和 BehaviorSubject 来实现这一目标。

在同一模块中的组件中完美运行,但在不同模块中的组件中没有运气。有什么建议吗?

【问题讨论】:

  • 到目前为止您已经尝试过什么。 stackoverflow.com/help/how-to-ask
  • This 文章通过服务的依赖注入对此进行了很好的描述。这应该是最好的,因为它实现了 Singleton 和 Observer 模式,并且非常容易扩展和维护。
  • 参考这个answer

标签: angular


【解决方案1】:

也许这个可以解决你的问题 https://stackblitz.com/edit/angular-xrknuj

【讨论】:

  • 我的情况是,我有共享模块,模块 1 和模块 2 都知道,共享服务是共享模块已知的(添加在提供程序中)。 module1 中的 component1 和 module 2 中的 component 2 正在订阅 shared service 中的 BehaviorSubject 。组件 1 触发的数据更改未在组件 2 中订阅
  • 你能为这个问题提供一个堆栈闪电战吗?
【解决方案2】:

您是否尝试过从共享模块导出您的组件?如果是这样,您可以使用组件输出(如果它们相邻)或服务(如果它们不相邻),就像您提到的那样在两个组件之间共享数据。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { MyComponent } from '../components/my-component';

@NgModule({
  imports: [
    CommonModule,
  ],
  declarations: [
    MyComponent,
  ],
  exports: [
    MyComponent,
  ],
})

export class SharedModule { }

【讨论】:

    【解决方案3】:

    这也应该适用于跨不同模块的服务。你的模块彼此了解吗?

    一个可能的架构可能是这样的: Module1Module2 想分享一些数据。然后你有一个Shared 模块,它同时导入Module1Module2。在这种情况下,通信应该有效。

    请在此处查看更多信息: https://medium.com/dailyjs/3-ways-to-communicate-between-angular-components-a1e3f3304ecb (您的解决方案是第 3 种)

    【讨论】:

    • 我的情况是,我有共享模块,模块 1 和模块 2 都知道,共享服务是共享模块已知的(添加在提供程序中)。 module1 中的 component1 和 module 2 中的 component 2 正在订阅 shared service 中的 BehaviorSubject 。组件 1 触发的数据更改未在组件 2 中订阅
    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2018-10-12
    • 2016-04-20
    • 2019-08-04
    • 2023-03-10
    • 2020-03-14
    • 2019-02-13
    相关资源
    最近更新 更多