Angular - resolver和组件不共享注入服务?

时间:2017-11-30 08:05:25

标签: javascript angular dependency-injection

我有一个表格可以在我的产品列表组件中显示一些产品。有适量的数据,所以我添加了一个解析器,以便在加载数据之前不让用户登陆页面。现在,我的解析器注入了我的产品服务,它有自己的方法从我的后端加载数据并将产品保存在服务内的数组中。所以我的解析器注入了这个服务,调用load products函数来预取数据,然后加载组件。

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

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

这种设置的最佳结构/方法是什么。我敢肯定它不是那么罕见吗?

1 个答案:

答案 0 :(得分:2)

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

因此,您应该在Core模块中提供您想要作为单身人士提供的服务,该模块会在应用程序启动时导入一次,而不会在其他任何地方导入。

以下是detailed explanation of the Core module.

的链接

度过美好的一天:)