Angular 2 - Component Factory mit einem String auflösen
Dies ist für die 2.1.0 Final Release-Versionen von Angular.
Ich versuche, eine Komponente, deren Typ aus einer Konfigurations-JSON-Datei übergeben wurde, dynamisch zu instanziieren. Das Beste, was ich finden kann, istComponentFactoryResolver
, aber alle Verwendungen, die ich bis auf eine gefunden habe, scheinen tatsächlich zu vergehenType
Objekte zum Resolver.
Gibt es eine Möglichkeit, das @ zu bekommType
aus einer Zeichenfolge? Da mir die Übergabe des Typs als Zeichenfolge derzeit den Fehler liefert:
No component factory found for MyComponent
Relevanter Code:
StructureBuilder-Komponente:
private renderComponent(config:any) {
let configComponents = config.components;
if(config.hasOwnProperty('components') && configComponents.length){
for(let i = 0, len = configComponents.length; i < len; i++){
this.componentResolver.resolveComponentFactory(configComponents[i]);
}
}
}
where config.components ist ein Array von Zeichenfolgen, die das @ verwendeType
als Wert.
Und in der Moduldefinition (Structure.module.ts)
@NgModule({
declarations: [
MyComponent,
StructureBuilder_Cmp
],
entryComponents: [
MyComponent
]
//Etc...
});
Soweit sich aus den spärlichen Dokumenten ergibt, sollten Sie genau so vorgehen.
Wenn ich den von @ übergebenen dynamischen String ändeconfigComponents[i]
zur tatsächlich importierten Typreferenz fürMyComponent
, Es klappt
Also im Grunde ist die Frage: Gibt es eine Möglichkeit, @ zu verwendresolveComponentFactory
mit Strings, um eine Komponente aufzulösen, und wenn nicht, gibt es eine Möglichkeit, ein @ zu erhaltType
Referenz von einem String-Wert?