在 Angular2 的路由器中获取活动路由上的组件实例?

Get instance of component on active route in Angular2's router?

我知道如果我调用 Router.routerState.snapshot,Angular2 中的 ActivatedRouteSnapshot.component 包含到激活路由的 reference/class 但是如何获取组件 class 当前(或最小:创建一个)实例吗?

Injector.get(..) 没有 return 组件实例,创建组件的新实例也无济于事(我)。

您可以使用

<router-outlet
  (activate)='onActivate($event)'
  (deactivate)='onDeactivate($event)'></router-outlet>

其中 $event 是组件实例,例如将其分配给服务以使其在全球范围内可用。

另见 https://angular.io/api/router/RouterOutlet

您还可以创建一个自定义 <router-outlet> 组件来自动执行此操作。

您应该可以通过 ActivateRoute 获取它。

例如,如果您有注入器服务:

const activatedRoute: ActivateRoute = this.injector.get(ActivatedRoute);

然后

component reference: this.injector.get(activatedRoute.component);

但是,这仅在您使用的注入器实例引用该组件本身时才有效。

在我的示例中,这可用于从该视图的子视图中查找 ViewComponent。

|- ViewComponent
  |- ChildComponent
    |- ChildComponent
      ... injector here -> using the code above, gets the ViewComponent' instance 
  |- ChildComponent

这可能不适用于您的实例,但是,希望这可能对某人有所帮助。