javascript - Angular - 解析器和组件不共享注入(inject)的服务?

标签 javascript angular dependency-injection

我有一个表格来显示我的产品列表组件中的一些产品。由于数据量适中,因此我添加了一个解析器,以便在加载数据之前不会将用户引导到页面上。现在,我的解析器注入(inject)我的产品服务,该服务有自己的方法从我的后端加载数据并将产品保存在服务内的数组中。因此,我的解析器注入(inject)此服务,调用加载产品函数来预取数据,然后加载组件。

现在的问题是,重用产品列表组件中的数据的最佳方法是什么?由于某种原因,如果我将相同的服务注入(inject)产品列表组件,我可以看到产品未加载,因此我不确定我的解析器和组件是否注入(inject)了相同的服务单例。

如果我只是使用解析器传递从服务本身获得的产品,那么我的组件可以访问这些产品,但是当涉及到对它们进行更新时,它不会将更改写入我的组件产品列表服务,其他组件在其他地方也需要该服务。

这种设置的最佳结构/方法是什么。我确信这不会那么罕见?

最佳答案

如果您查看 Angular 文档,其中有如下说明:“不要在共享模块中指定应用程序范围的单例提供程序。导入该共享模块的延迟加载 NgModule 会创建自己的副本服务..”

因此,您希望作为单例拥有的服务应该在核心模块中提供,您在应用程序启动时导入一次,并且永远不要在其他任何地方导入。

这里是 detailed explanation of the Core module. 的链接

祝你有美好的一天:)

关于javascript - Angular - 解析器和组件不共享注入(inject)的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568592/

相关文章:

javascript - d3 折线图的鼠标悬停功能未执行

java - 使用 war 将 spring-boot 和 angular 7 应用程序部署到 tomcat 8.5 中

javascript - 我需要从 Angular 2 中的其他组件获取公共(public)方法

javascript - jquery 显示/隐藏使图像变大

javascript - HTML5 仍然支持 pixelHeight 吗

javascript - 如何在 ipython 或 jupyter notebook 中加载外部静态 Javascript 文件

angular - 如何使用 Ionic 2 框架创建一个登录页面,然后进入一个选项卡式 View ?

c# - services.AddSingleton,永远不会调用服务的构造函数

java - 如何在 Spring 中连接相互依赖的 bean?

spring - 我解释 DI 和 IoC 的方式有什么问题?