向@CanActivate注入应用程序级服务

时间:2016-02-11 07:19:27

标签: dependency-injection angular2-routing

我希望通过使用@CanActivate路由生命周期事件来实现与Angular1.x路由“resolve”类似的功能。

作为允许路由通过的触发器,我想使用在应用程序引导程序中定义的服务(使其成为单个应用程序范围的实例)。

bootstrap(AppComponent, [ ROUTER_PROVIDERS, TestObjectModel ])

我认为可以在生命周期事件中使用依赖关系的唯一方法是使用以下内容:

const injector = Injector.resolveAndCreate([TestObjectModel]); const testObjectModel = injector.get(TestObjectModel);

这确实让我得到了一个服务实例,但是一个新实例(不是应用程序范围内使用的实例)。

我也试过了Injector.fromResolvedProviders,没有更好的结果。

有什么方法可以让我的手进入组件内的根注入器吗?

1 个答案:

答案 0 :(得分:1)

我在http://embed.plnkr.co/SF8gsYN1SvmUbkosHjqQ/找到了解决方法。

它可以工作,并允许我在生命周期钩子中获得单个服务实例。