在 AngularJS 2.0 Heroes 教程的解释中,它指出如果一个子组件在其 @Component Providers 列表中包含一个服务,那么 Angular 将创建一个特定于该子组件的单独的服务实例。我不明白的是,如果有时您想独立使用子组件,而有时在父组件中使用,您会怎么做。这似乎是一个严格的限制。我刚刚玩过 Angular 2.0,所以很可能我误解了一些东西。
这是来自英雄教程服务部分的 Angular.io 站点的解释。
附录:影子父母的服务
我们之前说过,如果我们将父 AppComponent HeroService 注入到 HeroDetailComponent 中,我们一定不能在 HeroDetailComponent 元数据中添加 providers 数组。
为什么?因为这告诉 Angular 在 HeroDetailComponent 级别创建一个新的 HeroService 实例。HeroDetailComponent 不想要自己的服务实例;它想要其父级的服务实例。添加 providers 数组会创建一个新的服务实例,它会隐藏父实例。
仔细考虑注册提供商的地点和时间。了解该注册的范围。注意不要在错误的级别创建新的服务实例。
这是指向此页面的链接,以将其置于上下文中。