【发布时间】:2018-03-24 07:51:30
【问题描述】:
现在,使用 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
【问题讨论】:
标签: angular ionic-framework angular-module angular-providers