所有
Angular2的第一天,当我在第6部分遵循其官方指导:在应用程序周围路由
https://angular.io/docs/ts/latest/tutorial/toh-pt5.html
在Create AppComponent
部分下,它说:
我认为Add HeroService to the providers array of AppModule
的原因是在没有导入的情况下使用它/在每个组件中一遍又一遍地声明它,但是当我打开heroes.component.ts
示例文件时,它仍然导入该服务:
import { HeroService } from './hero.service';
这让我很困惑,如果我们仍然需要在每个需要它的文件中导入HeroService,那么在AppModule的提供者元字段中注册服务有什么意义呢?
答案 0 :(得分:2)
providers
条目适用于Angular 2的依赖注入基础结构,import
适用于TypeScript类型。
在组件中使用服务时,依赖注入基础结构将使用NgModule
中的提供程序信息创建实例。但是,对于静态类型检查,仍然需要TypeScript import
,在某些情况下,类型本身是标识DI提供程序的内容。如果服务是使用非实际类型提供的 - 例如OpaqueToken
- 并且在注入时被声明为any
,那么您将不需要import
。