ERROR TypeError:无法读取属性' description'未定义的

时间:2018-03-19 04:54:17

标签: html angular

我有一个像这样的json文件

{
  "report": {
    "description": "Average of the quantity of items per person (total and just non-infected)",
    "average_items_quantity_per_person": 164.7473903966597,
    "average_items_quantity_per_healthy_person": 172.29787234042553
   }
}

我的report.model.ts

export class Report{
constructor(    
    public description: string,
    public average_items_quantity_per_person: number,
    public average_items_quantity_per_healthy_person: number
){}
}

我的report.component.ts

ERRO 但每当我尝试调用HTML文件时

{{printa(report)}}

我收到此错误

ERRO 有谁知道这个错误是什么,或者我是否与正确的.model的JSON文件相关

2 个答案:

答案 0 :(得分:0)

您需要传递报告,因为您要将数据分配给变量报告

{{printa(reports)}}

或者您可以直接将描述字段打印为

console.log(this.reports.description);

答案 1 :(得分:0)

假设您的printa(report)是拼写错误,并且您确实有printa(reports),那么您会收到此错误,因为Angular在您的报表服务设置数据之前调用此函数。由于reports在调用第一个undefined回调之前为subscribe,因此它会调用printa(undefined),然后尝试在第25行访问undefined.description

有两种方法可以解决这个问题。将reports成员初始化为包含空description属性,如

public reports: Report = {
    description: '',
    average_items_quantity_per_person: NaN,
    average_items_quantity_per_healthy_person: NaN,
};

或添加支票printa,以便在r undefinedpublic printa(r: Report) { if (!r) { return; } console.log(r.description); } 时返回

localStorage.youdataname = xyz;