更新> = RC.5
@NgModule({
...
})
export class AppModule {
ngDoBootstrap(moduleRef) {
appInjector(moduleRef.injector);
}
}
appInjector
实施见下文
原始< = RC.5
这不是直接由Angular2支撑。您可以将注射器存储在Angular应用程序的外部,然后从那里引用它,如https://github.com/angular/angular/issues/4112#issuecomment-153811572中@CanActivate()
修饰器的解决方法。 (Plunker example)
在main.ts
注射器被分配到appInjector
bootstrap(App, [
Auth,
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy})
]).then((appRef: ComponentRef) => {
// store a reference to the application injector
appInjector(appRef.injector);
});
app-injector.ts
let appInjectorRef: Injector;
export const appInjector = (injector?: Injector):Injector => {
if (injector) {
appInjectorRef = injector;
}
return appInjectorRef;
};
那么你就可以得到像
appInjector()...
日至喷射器参考如果在bootstrap()
完成之前创建了组件,它将不起作用。
完美,谢谢。 –
任何想法如何在ng2版本中做到这一点? – baryo
我更新了我的答案(虽然没有测试过)。 –