Это для 2.1.0 окончательных версий версии Angular.
Я пытаюсь динамически создать экземпляр компонента, тип которого передается из файла конфигурации JSON. Лучшее, что я могу найти, - это ComponentFactoryResolver
, однако все используемые вами методы, которые я нашел, сохраняют, похоже, передают фактическим объектам Type
в распознаватель.
Есть ли способ получить Type
из строки? Поскольку в настоящее время передача типа в виде строки дает мне ошибку:
No component factory found for MyComponent
Соответствующий код:
Компонент StructureBuilder:
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]);
}
}
}
где config.components - это массив строк, которые используют Type
как значение.
И в определении модуля (Structure.module.ts)
@NgModule({
declarations: [
MyComponent,
StructureBuilder_Cmp
],
entryComponents: [
MyComponent
]
//Etc...
});
Насколько это возможно с помощью разреженных документов, это именно то, как вы должны это делать.
Если я изменяю динамическую строку, переданную с configComponents[i]
, на фактическую ссылку на импортированный тип для MyComponent
, она работает.
Итак, в основном, вопрос:
Есть ли способ использовать resolveComponentFactory
со строками для решения компонента, а если нет, есть ли способ получить ссылку Type
из строкового значения?