现在,使用 Angular v5,在使用延迟加载的同时,我加载了app.module.ts
我认为可能不是最佳策略的所有提供程序,因为这不会加快我的应用程序启动时间,特别是因为我有类似 50 的自定义提供者(不要评判我;))。
因此,我问自己是否真的应该为我的所有应用程序加载所有这些,或者我是否应该只在我只使用它们的地方加载它们?
我猜最好只在我真正使用它们的地方加载提供程序。
但是在这种情况下,对我来说根本不清楚如何解决以下构造:
假设我有三个页面(A、B 和 C),它们有自己的模块和三个提供者(1,2 和 3)。
A use 1
B use 1, 2, 3
C use 1, 2
我想,因为 1 在所有应用程序中都使用,所以我必须在
app.module.ts
由于 3 仅在页面 B 中使用,我想我只需要在
B.module.ts
但是2呢?我如何在两者中声明它
B.module.ts
并C.module.ts
以共享相同的提供者“内存”为目标(如果提供者包含一个值,则 B 和 C 都应该看到同一个对象),我将如何分别编码?只需“像往常一样”注入提供者,然后用角度来完成其余的工作吗?
提前谢谢任何帮助,将不胜感激
更新
不确定我是否正确理解了角度文档,但这是目标,应该为所有应用程序加载提供程序,对吗?
看
https://angular.io/guide/ngmodule-faq#q-component-scoped-providers
2018 年更新
注入策略随着 Angular v6 的引入而发展。根据文档,可以providedIn
指定应该在哪个模块中使用服务。见https://angular.io/guide/dependency-injection