在 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
这可能不适用于您的实例,但是,希望这可能对某人有所帮助。
我知道如果我调用 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
这可能不适用于您的实例,但是,希望这可能对某人有所帮助。