如何获取父组件的注入器?

6
如果我有许多嵌套在彼此之内的组件:
ComponentA
  |___ Component AA
  |___ Component AB
       |___ Component ABA
           |___ Component ABAA
  |___ Component AC
  |___ Component AD

我现在所在的组件上下文是ABAA,我该如何获取组件AAAInjector


1
你需要注入器来做什么?如果你有一个服务,你可以选择在哪里进行注入(如果你想要某些组件的单个实例,或其他组件的新实例):https://angular.io/docs/ts/latest/guide/hierarchical-dependency-injection.html - Tiberiu Popescu
1个回答

12

获取父注入器有几种方法:

constructor(@SkipSelf() injector:Injector) {}
或者
constructor(injector:Injector) {
  this.parentInjector = (injector as ReflectiveInjector).parent;
}

我不知道如何获取父级的同级元素的注入器。无论如何,我相信您实际尝试解决问题的方式更好。


我明白了。那不是父组件的注入器。您可以将注入器传递给共享服务,以使其对注入该服务的其他人可用。但我强烈反对在注入器之间传递。对我来说,这似乎有点不妥。您能详细说明一下您实际想要实现什么吗? - Günter Zöchbauer
基本上,我只需要访问组件相对路由之外的路由。我需要访问顶级路由器。也许有更好的方法来实现这个? - Aristata
如果您需要访问顶级根路由器,只需注入“private router:Router”并像“this.router.root”一样访问根路由器即可。如果组件无法注入路由器,因为它不是路由组件,则将路由器注入服务,并将此服务注入组件以使路由器对其可用。如果您在顶层提供此服务,则注入的路由器已经是根路由器。 - Günter Zöchbauer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接