在 Angular CLI 中生成服务时,它会添加额外的元数据,该元数据具有“提供的”属性,默认为“根”,用于可注入装饰器。
@Injectable({ providedIn: 'root', })
providedIn 到底是做什么的?我假设这使该服务像整个应用程序的“全局”类型单例服务一样可用,但是,在 AppModule 的提供程序数组中声明此类服务不是更干净吗?
如果你使用providedIn,则注入被注册为模块的提供者,而不将它添加到模块的提供者中。
从Docs
Docs
服务本身是 CLI 生成的一个类,并用 @Injectable 修饰。默认情况下,此装饰器配置有 providedIn 属性,该属性为服务创建提供者。在这种情况下,providedIn: ‘root’ 指定应该在根注入器中提供服务。