我正在学习 Angular 并想知道如何仅当用户在下拉列表中选择特定项目时才能隐藏某些项目并显示某些项目。
例如,在我的页面中,我有图表文本框、文本文本框、网格文本框和一个包含图表、文本和网格的下拉列表。当用户选择文本时,我只想显示文本文本框并隐藏其余部分。
现在,当我运行项目时,三个图表类型选项都显示在下拉列表中,但是当我选择文本时它没有做任何事情,而且我的 ngIf 上出现错误说
“‘ChartType’类型上不存在属性‘文本’。”
如果有人可以教我或帮助我,我将不胜感激。
我遇到的问题是在我从 github 找到的项目中,下拉列表的数据在另一个名为 chart.model.ts 的文件中,它是这样写的
export class ChartUtil {
public static getChartTypeDisplay(type: ChartType): string {
switch (type) {
case ChartType.chart:
return "Chart"
case ChartType.text:
return "Text";
case ChartType.grid:
return "Grid";
default:
return "unknown";
}
}
}
并像这样显示
设计.component.ts
chartTypes: TypeListItem[] = [];
setupTypes() {
let keys = Object.keys(ChartType);
for (let i = 0; i < (keys.length / 2); i++) {
this.chartTypes.push({ value: parseInt(keys[i]), display: ChartUtil.getChartTypeDisplay(parseInt(keys[i])) })
}
html
<ng-container *ngIf="chart.chartTypes == chartTypes.text">
<mat-form-field appearance="fill">
<mat-label>Text</mat-label>
<input matInput />
</mat-form-field>
我无法在 stackblitz 上上传完整的项目,但我通过https://stackblitz.com/edit/angular-ivy-dmf3vn上传了这些文件中的所有代码