将单spa容器应用程序与有角度的子应用程序进行通信

时间:2020-04-06 12:54:21

标签: single-spa-angular single-spa

我需要帮助来从我的容器单spa与已加载的angular应用(child)进行通信。当用户单击父应用程序(spa-container)选项时,应该与子应用程序通信以更改模式。

它不会经常发生。但是无法找到一种从容器到加载的角度应用程序进行通信的方法。

spa本身提供了一个详细信息:spa-communication detail,但不清楚,没有详细的步骤。有人帮我吗?

1 个答案:

答案 0 :(得分:1)

我是单一spa的维护者之一。

我们倾向于参考文档中有关如何实现模块之间通信的意见,因为有很多实现方法,每种方法都有其优点/缺点。在您描述的情况下,听起来您可能想要从发布的链接中探索选项#3。

自定义浏览器事件

在父级中,您将在窗口上触发自定义事件。 API on MDN

简单示例

//  in the parent (usually called the single-spa config or root-config in the documentation)
const event = new CustomEvent("myEvent", {favoriteMovie: 'StarWars'})
window.dispatchEvent(event)
// in the child (or registeredApplication)
window.addEventListener("myEvent", myEventHandlingFunction)

function myEventHandlingFunction(e) {...}

这至少应该让您入门,还有其他交流选项,并且这种特定方法并不是在每种情况下的最佳解决方案。

值得注意的是,除非包含polyfill,否则customEvents在IE11中不起作用。