我知道Angular2中的ActivatedRouteSnapshot.component
包含激活路由的引用/类,如果我调用Router.routerState.snapshot
但是如何为组件类获取当前(或最小:创建一个)实例?
Injector.get(..)
不返回组件的实例,创建组件的新实例也没有帮助(我)。
答案 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
这可能不适用于您的实例,但是希望对您有所帮助。