在Angular 2中与多个组件共享websocket数据

Share websocket data with multiple components in Angular 2

本文关键字:组件 共享 websocket 数据 Angular      更新时间:2023-09-26

我有一个主要组件。在这个组件内部,我使用WebSockets从服务器接收数据。我收到一个包含一系列字段的对象。例如,文件的数量可以从0到10。每次我收到一个对象时,我都使用forEach()来获取所有字段。对于每个字段,我需要初始化一个组件,如下所示:

self.dcl.loadIntoLocation(StreamComponent, self.elementRef, 'stream');

如果对象的当前字段的组件副本已经存在,我需要在视图中用新接收的数据更新它。我的主要问题是我不知道如何将数据从WebSockets传递到创建的组件。我可以创建和初始化它,但我从不介意如何将数据传递给它。有什么想法吗?

您可以尝试利用方法返回的promise

self.dcl.loadIntoLocation(
  StreamComponent, self.elementRef, 'stream').then((compRef:ComponentRef) => {
    compRef.instance.someAttr = something;
});

这个承诺允许您获取新创建的组件的实例,并在其属性(例如,web套接字)中设置数据。