【发布时间】:2017-11-30 16:31:48
【问题描述】:
我有一个表格来显示我的产品列表组件中的一些产品。数据量适中,所以我添加了一个解析器,以便在加载数据之前不让用户登陆页面。现在,我的解析器注入了我的产品服务,它有自己的方法来从我的后端加载数据并将产品保存在服务内部的数组中。所以我的解析器注入这个服务,调用加载产品函数来预取数据,然后加载组件。
现在的问题是,重用产品列表组件中数据的最佳方式是什么?出于某种原因,如果我将相同的服务注入到产品列表组件中,我可以看到产品没有加载,所以我不确定我的解析器和组件是否注入了我的服务的同一个单例。
如果我只是使用解析器来传递它从服务本身获得的产品,那么我的组件可以访问这些产品,但在对它们进行更新时,它不会将更改写入我的产品列表服务,这是其他组件在其他地方所需要的。
这种设置的最佳结构/方法是什么。我确定它不会那么罕见?
【问题讨论】:
-
你是在你的模块提供者中提供你的服务吗?
-
是的,它在我的产品列表模块和加载我的解析器的模块(应用程序模块)中都提供了
-
在这种情况下,您应该创建一个将由两个模块(产品列表和应用程序)导入的 shareModule。这样只会创建一个服务实例,而现在正在创建两个实例
-
谢谢,让我试一试,然后回复你。
-
感谢您的帮助。它现在似乎正在工作。只是现在什么是好的做法的问题。由于我的解析器的唯一目的是运行我的服务中的方法,它不需要将这些方法返回给组件,因为它也注入了服务。那么这是一个好习惯吗?我不应该从解析器返回任何东西吗?
标签: javascript angular dependency-injection