Angular 模块联盟 BrowserModule

Angular Module Federation BrowserModule

我正在使用 webpack5 和 CLI11 开发一个模块联合原型,主要如下所述:https://www.angulararchitects.io/aktuelles/the-microfrontend-revolution-part-2-module-federation-with-angular/.

基本上,我有一个主机应用程序,它从页面 b 加载一个共享模块。然后应该在主机中使用该共享模块。它设置了一个 RouterModule.forChild() 并公开以通过 webpack 共享。到目前为止,这是有效的。

现在我添加了我们的组件之一,它在内部使用了动画,但出现了问题。在我的共享模块中导入 BrowserAnimationsModule 或任何平台相关模块(如 BrowserModule 或 NoopAnimationsModule 本身)后,主机应用程序将不再工作。 每次我导航到它时,路由器只会在彼此下面添加一份我的共享内容的新副本。我假设它每次加载模块时都会创建一个新平台,但我该如何防止呢?

我也曾尝试在应用程序和主机之间共享@angular/platform-browser/animations,但没有成功。

我知道 webpack 5 不是当前 CLI 的官方部分,但我想知道是否有人已经偶然发现了它。我认为它作为一个用例并不少见。

我已经建立了一个存储库来重现这里的问题:https://github.com/paad/module-federation

这是否已经是一个已知问题? 也许有人有建议?

我遇到了同样的问题,但成功解决了。

"@angular/animations": {singleton: true, eager: true} 添加到 Shell 和遥控器的共享块中。

您不再需要导入 BrowserAnimationsModuleNoopAnimationsModules,AppModule 除外。另外,没必要分享@angular/platform-browser/animations

我无法 运行 你的例子,点击链接没有做任何事情,localhost:3000 和 3001 也没有显示任何东西。但是我遇到了类似的问题,该问题基本上是由两次引起的,一次是在 shell 应用程序中,第二次是在微前端中。