代码之家  ›  专栏  ›  技术社区  ›  papiro

对任何非延迟加载模块使用@Injectable providedIn是否与providedIn:“root”相同?

  •  4
  • papiro  · 技术社区  · 6 年前

    providers 数组将使单例对应用程序范围可用。如果这是真的,

    正在使用 @Injectable providedIn 对于任何非延迟加载的模块 providedIn: "root" ?

    1 回复  |  直到 6 年前
        1
  •  5
  •   bgraham    6 年前

    一般来说,您应该总是在@Injectable声明中使用providedIn:“root”语法。当它只加载到一个模块中时,它甚至可以使用延迟加载,因此直到angular加载模块后,服务才会加载。这是一个更好的方法。

    我想只有两个例外 1) 您想在组件中声明它。这将导致它不是一个单例,而是限定到组件的范围 2) 您将在两个单独的模块中使用它,但都是延迟加载的模块(在初始加载中也没有使用它),在这种情况下,我认为最好的选择是在初始加载时将它引入AppModule。

    推荐文章