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

Raj*_*tya 2 dependency-injection angular-cli angular angular-di

当我们创建ComponentPipeangular-cli命令,CLI会自动将它们在特定模块的声明数组,为什么不服务的情况下发生的。

Sid*_*era 5

这是因为你能提供ServicesComponents为好,以防万一你想的一样的不同实例Service

通常Components,,PipesDirectivesModules 上注册,因为Module需要先了解它们,然后才能使用它们。

但是在Services的情况下,由于a Service可以在一个Module级别上注册,也可以在一个级别上注册Component(因为Angular支持分层依赖注入),因此@angular/cli假设您想在该Module级别注册服务没有任何意义。

我想这是对我来说很有意义的角度队决定不添加唯一Serviceproviders模块在创建时数组。

  • @SurenSaluka,长话短说,您要么必须在服务的“@Injectable”装饰器上设置“providedIn”字段,要么必须将该服务添加到 Angular 模块的“providers”数组中。检查这个示例 StackBlitz](https://stackblitz.com/edit/angular-provided-in-field-vs-providers-array?file=src/app/sample.service.ts) 以更好地理解这一点。希望这可以帮助。 (2认同)