代码之家  ›  专栏  ›  技术社区  ›  Rajat Badjatya

为什么Angular CLI不自动在providers数组中添加服务?

  •  2
  • Rajat Badjatya  · 技术社区  · 6 年前

    Component , Pipe 具有 angular-cli 命令,CLI会自动将它们添加到特定模块的声明数组中,这就是为什么在服务的情况下不会发生这种情况。

    1 回复  |  直到 6 年前
        1
  •  10
  •   Community CDub    5 年前

    在Angular 5之前,您需要向 providers 一个角度模块的数组,将其注册到角度模块的注入器上。

    从第6年起,服务就变成了树摇动。

    什么是摇树?

    为什么在Angular 6之前Angular服务不支持树抖动?

    在Angular 6之前,您需要向 提供者 角度模块的数组,以便将它们注册到服务的注入器上。为了做到这一点,你必须添加一个 import 语句来实际引用服务。这将使它不会摇动。

    但在引入了 providedIn 中的字段 @Injectable 装饰者的元数据。如果设置为某个值( 'root' 例如),然后服务将被注册为依赖注入(在本例中为根注入)。

    而且由于它将在注入器上注册以进行依赖注入,因此我们不必显式地将它添加到 提供者 进口 文件顶部的语句。

    这反过来又会使服务树在不使用时变得不稳定。

    providedIn: 'root' 添加到 提供者 角模的数组。