如何在 Angular 应用程序和 Angular 元素之间共享服务

问题描述 投票:0回答:1

我有一个角度应用程序升级到角度9,我在其中使用角度元素,它也升级到角度9。我有一个服务模块(角度9),我正在我的角度应用程序中导入它。我的角度元素也导入相同的服务。我希望在我的角度应用程序和角度元素之间共享该服务的单个实例。 Angular 9 提供了新的服务注入选项,现在称为“平台”。根据角度文档https://next.angular.io/api/core/Injectable

'platform':页面上所有应用程序共享的特殊单例平台注入器。

我将服务更改为从根级别注入到平台级别。但我仍然看到我的服务的两个实例,一个在我的应用程序中,另一个在角度元素中。

@可注射({ 提供于:“平台” })

如何在我的应用程序和 Angular 元素之间共享我的服务的单个实例。

angular angular-services angular9 angular-elements
1个回答
0
投票

我可能迟到了,但我相信问题可能是你将 Angular 包含了两次?

由于自原始帖子以来 Angular 发生了很大变化,我怀疑您仍在使用 Angular 9。如果使用旧版本的 Angular,您将需要查看您的vendor.js 包。两个应用程序的内容应相同,并且仅在 index.html 中包含一次。自定义它可以通过修改自定义 webpack 配置来实现。

否则到 2024 年,随着最新的 Angular,我会推荐 Native federation。如果您的几个主要版本被延迟,那么模块联合可能更适合您。无论哪种情况,您都必须研究依赖项管理,并确保您 A) 使用完全相同的 Angular 版本直至补丁版本,或者 B) 告诉模块联盟将不同版本映射到相同的 Angular(有关模块的文章系列)联盟详细列出了您的选择)。

© www.soinside.com 2019 - 2024. All rights reserved.