0
我有一個水平條形圖組件需要這將隨後由圖表庫horizontalBarChart
一起使用的數據@input:多D3圖表使用相同Angular2部件
export class HorizontalBarChartComponent implements OnInit {
@Input() data: Object[];
ngOnInit() {
horizontalBarChart.init({
id: '#horizontal-bar-chart',
data: this.data
});
}
}
內部horizontal-bar-chart.html
:
<div id="horizontal-bar-chart"></div>
而且d3
選擇用於在圖表庫中的給定id:
const svg = d3.select(chartOptions.id)
.append('svg')
.attr('width', width + margin.left + margin.right)
.attr('height', height + margin.top + margin.bottom);
現在我想生成多個柱狀圖,每個不同的數據,在組件頁:
<div>
<h6>Group</h6>
<app-horizontal-bar-chart [data]="data.chart1"</app-horizontal-bar-chart>
</div>
<div>
<h6>Ctp</h6>
<app-horizontal-bar-chart [data]="data.chart2"</app-horizontal-bar-chart>
</div>
的問題是兩個圖表是第一部分的<div id="horizontal-bar-chart"></div>
內部產生。
解決這種情況的最佳方法是什麼?
編輯:
我目前解決這個問題的方法是給每個圖表組件的div
佔位符:
<div>
<h6>Group</h6>
<div id="chart1"></div> // placeholder
<app-horizontal-bar-chart [id]="chart1" [data]="data.chart1"</app-horizontal-bar-chart>
</div>
<div>
<h6>Ctp</h6>
<div id="chart2"></div> // placeholder
<app-horizontal-bar-chart [id]="chart2"[data]="data.chart2"</app-horizontal-bar-chart>
</div>
但是我不知道是否還有更多的是Angular2的解決這個問題的方法,可能使用ViewContainerRef
什麼的。
請你創建的jsfiddle這個問題? –
我稍微改變了我的答案。這是[Plunkr](https://embed.plnkr.co/7bdo4bVi80hCVthNHyDB/) – hiper2d
這是一個更好的解決方案! – newman