将 single-spa 容器应用程序与 angular 个子应用程序通信

Communicating single-spa container app to angular child app

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

不会经常发生。但无法找到从容器到加载的 angular 应用程序进行通信的方法。

spa自己给的很详细:spa-communication detail但是不清楚,也没有详细的步骤。有人帮帮我吗?

我是 single-spa 的维护者之一。

我们倾向于在文档中对如何实现模块之间的通信发表意见,因为实现它的方法有很多种,并且每种方法都带有 pros/cons。在您描述的情况下,听起来您 可能 想探索您发布的 link 中的选项 #3。

自定义浏览器事件

在父级中,您可以在 window 上触发自定义事件。 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) {...}

这至少应该让你开始,还有其他的沟通方式,这种特殊的方法并不是在所有情况下都是最好的解决方案。

还值得注意的是,自定义事件在 IE11 中不起作用,除非您包含 polyfill。