angular - Hämta bootstrapad komponent
Jag har ett enkelt @NgModule som startar 2 komponenter:
// Global module for all Angular Component
@NgModule({
declarations: Components, // directives, components, and pipes owned by this NgModule
imports: [BrowserModule, HttpModule, FormsModule],
providers: Providers,
bootstrap: [Menu, Main]
})
export class MenuModule { }
Jag vill lagra en referens till min Main-komponent som bootstrapas av min MenuModule. Jag försökte implementera .then-metoden av bootstrapModuleDynamic(), men jag får bara fabriken för komponenten.
// Bootstrap of module
platformBrowserDynamic()
.bootstrapModule(MenuModule)
.then((menuModule: NgModuleRef<MenuModule>) => {
var test: ComponentFactory<Main> = (<any>menuModule).bootstrapFactories[0];
});
Några idéer?
Svar #1
Jag ser två sätt att få en lista över bootstrapade komponenter:
1) Använda ApplicationRef
platformBrowserDynamic()
.bootstrapModule(MenuModule)
.then((menuModule: NgModuleRef<MenuModule>) => {
const appRef = menuModule.injector.get(ApplicationRef);
const components = appRef.components;
});
2) Använda ngDoBootstrap-metoden på din modul:
@NgModule({
declarations: [Components, // directives, components, and pipes owned by this NgModule
imports: [BrowserModule, HttpModule, FormsModule],
providers: Providers,
entryComponents: [Menu, Main]
// bootstrap: [Menu, Main]
})
export class MenuModule {
ngDoBootstrap(appRef: ApplicationRef) {
const compRefMenu = appRef.bootstrap(Menu);
const compRefMain = appRef.bootstrap(Main);
}
}
