【问题标题】:Is using @Injectable providedIn for any non-lazy-loaded module the same as providedIn: "root"?是否对任何非延迟加载的模块使用@Injectable providedIn 与providedIn:“root”相同?
【发布时间】:2018-08-31 17:29:29
【问题描述】:

我已经彻底阅读了文档,虽然我无法找到它的确切引用位置,但我的印象是,在热切加载模块的 providers 数组中声明服务将使单例可用于应用程序范围。如果这是真的,

是否将@Injectable providedIn 用于与providedIn: "root" 相同的任何非延迟加载模块?

【问题讨论】:

    标签: angular angular-di


    【解决方案1】:

    是的,它是一样的。

    一般来说,您应该始终只在@Injectable 声明中使用providedIn: "root" 语法。当它刚刚加载到一个模块中时,它甚至可以与延迟加载一起使用,因此在角度加载模块之前不会加载服务。它是一种更好的构造。

    我认为首选providedIn的唯一2个例外是 1)您想在组件中声明它。这将导致它不是单例,而是作用于组件 2)您在 2 个单独的但都是延迟加载的模块中使用它(并且它也没有在初始加载中使用),在这种情况下,我相信最好的选择是通过在初始加载时将其带入 AppModule 来急切地加载它。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2020-04-04
    • 2020-05-10
    • 2021-01-01
    • 2023-02-21
    相关资源
    最近更新 更多