如何最好地处理大型外部API,以便可以在多个组件之间共享单个实例?

时间:2016-06-29 15:49:54

标签: typescript angular webrtc

我想创建一个具有large external API的对象的单个实例,并在我的应用的几个组件之间共享它。

此API有几种我需要实现的事件方法(例如onJoin()onClose()onOpen()等)。由于不同的事件与我的应用程序的不同组件相关联,我考虑在这些组​​件中实现这些事件,而不是在Singleton类中实现。

或者,我想知道我是否应该 - 甚至可以 - 让这些事件方法中的每一个触发使用EventEmitter创建的自定义事件,并且在每个相关组件类中都有准备好处理的侦听器方法这些事件。但它似乎是EventEmitter can only be used by components and directives,而不是普通的类。

另一个问题是我是否应该为此对象创建一个Singleton类,或者将其视为一种“服务”并将其注入依赖组件。

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:0)

我没有使用EventEmitter,在经过一些试验和错误之后我发现它没有工作(事件回调函数被调用很晚,或者根本没有调用),我实现了外部库中的回调函数。这些初始函数使用window.dispatchEvent(event)来发出一个CustomEvent,并将其原始的事件传递给它。参数。然后可以使用@HostListener('窗口:onWhatever',[' $ event'])在我的应用内部获取此事件。

Here是我从中获得此解决方案的地方。

我还使用Service来处理初始化外部库对象并封装其功能和选项。这种方法似乎运作良好。