0

问题

我们正在使用 Angular 12 和 Webpack 模块联合创建一组新的应用程序。我们一直在遵循很多指南,并且大部分都在工作。我们现在需要我们的主机/外壳应用程序从一些子应用程序中查询信息,主要是在主机/外壳程序初始化时,我们无法弄清楚如何实现这一点。注意:所有涉及的应用程序,包括外壳程序和所有子程序,都将是 Angular 12+。我们没有混合不同的框架。

出于关注点分离的原因,我们希望 shell 应用程序查询一些子项,以便子项可以确定当前用户可以访问其应用程序的哪些链接/部分,然后将其传达回 shell。这是为了我们的导航——shell 直到运行时才知道有哪些子应用程序存在。

我们的想法是,当 shell 启动时,shell 以某种方式调用的子节点数量有限。具体如何工作并不重要,我们可以让每个孩子将此启动代码放在一个仅用于此目的的特殊模块中,然后我们以某种方式在运行时从 shell 调用该模块。我们已经有跨应用程序通信工作,所以我们不需要从孩子显式地与 shell 通信,我们只需要触发此代码以按需运行。

tl;dr:我们的 shell 应用程序如何在特定的子应用程序中按需触发一些仅在运行时才知道的初始化行为?除了实际触发子应用程序启动而不直接路由到它们之外,我们已经为此工作了一切。不需要通信,我们已经有一个有效的消息传递实现,我们只需要首先触发代码运行。

我们尝试过的事情

我们尝试了两种解决方案。第一个是根据 Manfred Steyer 的这篇文章建模的,基本上是动态加载导致ngOnInit()被调用的远程组件。二是动态创建<router-outlet>s。这两个都有问题(许多与inject()在注入上下文之外调用相关的错误等等)。我们可以继续解决这些问题,但我觉得已经有解决方案了,所以我想我会问。

4

0 回答 0