更新> = 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
我更新了我的答案(雖然沒有測試過)。 –