【问题标题】:how to fix property does not exit in Angular如何修复 Angular 中不存在的属性
【发布时间】:2020-05-30 00:19:35
【问题描述】:

所以我正在处理现有的代码库,我正在尝试制作 mat-form 文件以获取写入 mam-chart.model.ts 文件的 TextData,但由于某种原因我收到此错误“错误类型错误:无法读取未定义“”的属性“文本”。我

任何建议或帮助将不胜感激

design.ts

import { Chart, TextData, ChartData} from 'src/app/mam-chart/models';
export class ChartDesignComponent implements OnInit {
 chart: Chart;
 chartData: ChartData;
}

设计.html

            <mat-form-field appearance="fill">
                <mat-label>Text</mat-label>
                <input matInput  [(ngModel)]="chartData.textData.text" />
            </mat-form-field >

            <mat-form-field appearance="fill">
                <mat-label>Color(# + hex color code)</mat-label>
                <input matInput [(ngModel)]="chartData.textData.color"/>
            </mat-form-field >

mam-chart.model.ts

export class Chart {
    id: number;
    chartType: ChartType = ChartType.chart;
    version: number = 2;
    dataType: ChartDataType = ChartDataType.static;
    template: ChartTemplate;

    .........

}
export class TextCard extends Chart {
    public chartData: CardDataChart;

    constructor(json?: any) {
        super(json)
        if (json == null) {
            return;
        }
        this.chartData = new ChartData(json.chartData);
    }
}


export class TextData {
    public text:  string;
    public color:  string;
    public size: string;
    public sizePx: number;

    constructor(json?: any) {
        if (json == null) {
            this.text = "";
            this.color = "";
            this.size = "";
            this.sizePx = 20;
            return;
        }
       ......

export class ChartData {
    filteredData: FilteredData[];
    figures: Figure[];
    textData: TextData;
}

【问题讨论】:

  • 您在哪里实例化组件中的 Chart 和 ChartData?只有这些类型的属性定义
  • 你需要写this.chart = new Chart()this.chartData = new ChartData(json);在您的ChartDesignComponent 内。在构造函数内部或 ngOnInit.或者您只需要在模板中使用chartData.textData.color。我们需要看到更多的ChartDesignComponent 来帮忙
  • @AlanGrosz 您好,我不确定您的意思,但我添加了一些代码,请您再检查一下。谢谢

标签: html angular typescript angular-material


【解决方案1】:

您的图表类也没有属性 chartData 和 textData... 试试看[(ngModel)]="chartData.textData.color"

【讨论】:

  • 您好,我在我的 design.ts 文件中做了 chartData2 : ChartDataChart 在我的 HTML 文件中做了 [(ngModel)]="chartData2.textData.size" 但我在我的 chrome 控制台中遇到了这个错误“ERROR TypeError : 无法读取未定义“的属性‘textData’。碰巧你知道这个错误是关于什么的。谢谢
  • 这个错误说明 chartData2 未定义。您需要为 chartData2 创建 ChartDataChart 实例,然后您可以绑定 chartData2.textData.size 字段
  • 您好,我在 [(ngModel)]="chartData.textData.color" 上做了第一个,但现在我得到了“无法读取属性 'text' of”。我知道我的 ChartData 中有这个 textData = TextData 但我不确定为什么它说它无法读取。
猜你喜欢
  • 2018-09-27
  • 2022-01-05
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2019-11-11
相关资源
最近更新 更多