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

时间:2017-08-01 07:36:41

标签: angular components angular2-routing

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

Injector.get(..)不返回组件的实例,创建组件的新实例也没有帮助(我)。

2 个答案:

答案 0 :(得分:10)

您可以使用

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

其中$event是组件实例,例如将其分配给服务以使其全局可用。

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

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

答案 1 :(得分:0)

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

例如,如果您具有Injector服务:

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

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