ng2 - динамическое создание компонента на основе шаблона
Я смотрел на API Angular 2 дляComponentResolver
а такжеDynamicComponentResolver
для создания динамических компонентов, но я имею в виду нечто иное, чем те API предлагают.
Есть ли способ в NG2 создать компонент, основанный на строке его имени класса?
Например, я создаю настраиваемую панель инструментов диаграмм. Разметка каждого пользователя хранится в базе данных, указывая, что им нужны 2x линейные графики здесь, 3x там гистограммы и т. Д.
Когда я загружаю эти данные как json, это выглядит примерно так:
user.charts = [
{ type: 'LineChartComponent', position: ... }
{ type: 'BarChartComponent', position: ... }
];
кудаtype
это имя класса компонента, которое я хочу рефлексивно создать.
Пока у меня есть следующее:
this.chartMap = {
'LineChartComponent': LineChartComponent
};
let config = this.configuration;
let chartComponentType = this.chartMap[config.type];
let factory = this.componentFactory.resolveComponentFactory(chartComponentType);
let component = factory.create(this.injector);
component.instance.configuration = config;
this.chartContainer.insert(component.hostView);
Но вся идея состоит в том, чтобы устранить необходимостьchartMap
, Как я могу рефлексивно создать этот класс на основе строки, не имея ссылки на тип?