- chart.chartType = ChartType.Column;
复制代码 Angular 枚举但是,Enum类型属性的问题出现在Angular模板中,您可能需要在其中指定其值,但不能这样做。唯一的方法是使用与枚举成员相对应的数字常量,但是这种方法会产生不清楚的标记,并且找出它们的值可能很烦人:
- <wj-flex-chart [chartType]="2" …>
复制代码问题的根源在于,除了Angular模板表达式中的组件属性外,无法引用任何内容。但是,这些属性仍然可用,因此让我们利用它吧!我们可以仅添加一个存储对必要的Enum类型的引用的属性,例如此处的ChartType属性:
- import * as wjcChart from 'wijmo/wijmo.chart';
- …
- export class AppCmp {
- ChartType = wjcChart.ChartType;
复制代码现在我们可以在模板绑定中引用枚举成员:
- <wj-flex-chart [chartType]="ChartType.Column" …>
复制代码 Wijmo枚举类型属性
请注意,当涉及
Wijmo组件时,此问题并不那么严重,您可以在其中将枚举成员的字符串名称分配给属性。此方法将起作用,因为所有Wijmo枚举类型属性都可以将此类字符串转换为实际的枚举值。例如:
- <wj-flex-chart [chartType]=" 'Column' " …>
复制代码但是,在双向绑定的情况下,此方法可能会引起问题。例如,如果要将可能的图表类型的菜单绑定到图表的chartType属性。您可能会得到其中一种可爱的“检查后表达式已更改”异常,或者所选菜单项不会显示在菜单标题中。使用真实枚举值的代码不会出现以下潜在问题:
- Component:
- chartType = wjcChart.ChartType.Column;
- Template:
- <wj-flex-chart [itemsSource]="data"
- [chartType]="chartType"
- [bindingX]="'country'"
- style="height: 200px">
- <wj-flex-chart-series [name]="'Downloads'" [binding]="'downloads'"></wj-flex-chart-series>
- </wj-flex-chart>
- <wj-menu [(value)]="chartType" [header]="'Chart Type'">
- <wj-menu-item [value]="ChartType.Column">Column</wj-menu-item>
- <wj-menu-item [value]="ChartType.Scatter">Scatter</wj-menu-item>
- <wj-menu-item [value]="ChartType.Line">Line</wj-menu-item>
- </wj-menu>
复制代码这里的菜单项值定义为真正的枚举值,菜单值属性绑定到图表的双向图图表类型通过组件的ChartType属性属性。