1. ホーム
  2. angular

[解決済み] LegendItemComponent をカスタマイズする Angular 用 kendo-ui

2022-01-31 12:03:31

質問

皆さん、おはようございます。ドーナツチャートの凡例をカスタマイズする必要があります。 ドキュメントによると、LegendItemVisualArgsオブジェクトを定義して、createVisual()メソッドを初期化する必要があるそうです。

ここでは、私が行った方法を紹介します。

export class CustomLegendItemViewModel implements LegendItemVisualArgs {
options: any;
pointIndex: any;
sender: ChartComponent;
series: any;

createVisual(): Circle {
    const geometry = new GeomCircle([10, 10], 10);

    return new Circle(geometry);
}

その後、Angularコンポーネントにこのオブジェクトを作成します。

export class ChartItemComponent implements OnInit, OnDestroy {
  visual: CustomLegendItemViewModel = new CustomLegendItemViewModel();
}

そして、HTMLコードでは、私のカスタム凡例-アイテムビューを私のオブジェクトにバインドしようとします。

<kendo-chart>
            <kendo-chart-series>
                <kendo-chart-series-item [holeSize]="100"
                        type="donut" [data]="data2" [size]="20"
                        categoryField="kind" field="share">
                </kendo-chart-series-item>
            </kendo-chart-series>
            <kendo-chart-legend [visible]="true">
                <kendo-chart-legend-item [visual]="visual"></kendo-chart-legend-item>
            </kendo-chart-legend>
        </kendo-chart>

というエラーに直面したことがあります。

Uncaught TypeError: customVisual is not a function
at LegendItem.renderVisual (legend-item.js:112)
at LegendLayout.render (legend-layout.js:33)
at Legend.createItems (legend.js:101)
at new Legend (legend.js:27)
at Chart._getModel (chart.js:463)
at Chart._redraw (chart.js:279)
at Chart._noTransitionsRedraw (chart.js:1284)
at Chart._resize (chart.js:134)
at Chart.resize (chart.js:128)
at ChartComponent.push../node_modules/@progress/kendo-angular-charts/dist/es/chart.component.js.ChartComponent.resize (chart.component.js:389)

どなたか、この問題を解決する方法をご存知でしょうか?または、カスタマイズの例への参照を送ってください。

ありがとうございます。

解決方法は?

APIに基づき function から visual の入力になります。( APIリファレンス )

以下のコードで、関数をバインドしています。 visualFn を入力に visual . ( 作業例 )

html

<kendo-chart>
    ...
    <kendo-chart-legend [visible]="true">
        <kendo-chart-legend-item [visual]="visualFn"></kendo-chart-legend-item>
    </kendo-chart-legend>
</kendo-chart>

コンポーネント

public visualFn(e: SeriesVisualArgs): Group {
    const geometry = new GeomCircle([10, 10], 10);
    return new Circle(geometry);
}