10

私は、動的コンポーネントを作成するための Angular 2 API を検討してきましたがComponentResolverDynamicComponentResolverそれらの API が提供するものとは異なることを念頭に置いています。

NG2 でクラス名の文字列に基づいてコンポーネントを作成する方法はありますか?

たとえば、構成可能なチャート ダッシュボードを構築しています。各ユーザーのレイアウトはデータベースに保存され、ここに 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。型への参照がなくても、文字列に基づいてこのクラスを反射的に作成するにはどうすればよいですか?

4

2 に答える 2