我正在尝试使用platformWorkerAppDynamic
等实现基于Web worker的应用程序,但我在实施HMR时遇到了一些困难。
如果我不打电话给appModule.destroy()
,那么HMR实际上是“有效”的,因为如果我进行更改,它就会热更新并重新正确呈现。但是,我将剩下N个正在运行的Web工作者,其中N是热重新加载的次数。因此,如果我热重新加载三次,每次点击按钮都会动作三次。
相反,如果我使用调用appModule.destroy()
的HMR的常用方法,则应用程序热重新加载,并按预期重新渲染,但任何后续UI交互(如按钮单击)都会导致{{ 1}}
例如:
ERROR TypeError: Cannot read property 'events' of null.
重新加载webworker模块的正确方法是什么?
答案 0 :(得分:0)
经过对此的大量研究后发现,问题在于Angular在platform-webworker
中对网络工作者的实施;即使在销毁应用程序模块之后,仍然会连接两个关键的侦听器并监听现在被破坏的代码:PostMessageBusSink
中的区域订阅和PostMessageBusSource
中的事件侦听器。
我创建了一个GitHub问题,其中包含更多详细信息: