Я рассматривал API Angular 2 для ComponentResolver
и DynamicComponentResolver
для создания динамических компонентов, но у меня есть что-то другое в виду, чем предлагаемые API.
Есть ли способ в NG2 создать компонент на основе строки имени класса?
Например, Im создает настраиваемую панель диаграмм. Каждый пользовательский макет хранится в базе данных, заявляя, что он хочет получить 2-х линейные диаграммы, 3х столбчатые диаграммы и т.д.
Когда я загружаю эти данные в 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
. Как я могу отразить создание этого класса на основе строки без ссылки на этот тип?