如何在课堂上制作方法?

时间:2017-07-20 12:19:59

标签: angular typescript

我的班级目前看起来像这样:

export class Patient {
    constructor(public id: number, public name: string, public location: string, public bedId: number, public severity: string,
                public trajectory: number, public vitalSigns: [GraphData[]], public latestReading: GraphData[]) {
    }

    public get combinedVSData(): Array<GraphData> {
        let combinedVitalSigns: GraphData[] = [];
        for (let data of this.vitalSigns) {
            combinedVitalSigns.push(data[0]);
        }
        return combinedVitalSigns;
    }
}

当我尝试拨打patient.combinedVSData时,它会返回undefined。我试图简单地让它返回一个结果相同的字符串,我已经在方法中创建了console.log()但我在控制台中看不到任何内容所以它根本没有被召唤。我做错了什么?

我在我的一个模板中调用方法,如下所示:

 [results]="patientService.patientLevel3.combinedVSData"

我也在我的一个组件中调用它&#39;上课只是为了测试它:

onDrop(event: any){
let movedPatient: Patient = JSON.parse(event.dataTransfer.getData("patient"));
let from = parseInt(event.dataTransfer.getData("from"));

console.log(movedPatient.combinedVSData);

this.patientService.patientLevel3 = movedPatient;
this.patientService.removePatient(from, movedPatient.id);
}

}

两种情况都未定义。

编辑:我发现combineVSData不在对象上的原因是因为它在转换为JSON时显然会丢失它。我不知道可以做些什么。

2 个答案:

答案 0 :(得分:0)

更改import matplotlib.pyplot as plt import numpy as np data = np.arange(10000).reshape((100, 100)) plt.imsave("/tmp/foo.png", data, format="png", cmap="hot") 而不是public combinedVSData(): Array<GraphData>{}数组{

答案 1 :(得分:0)

您将combineVSData定义为getter而不是方法。 我做了一个例子来向你展示getter和方法之间的区别

class Patient {
    constructor(public id: number) {
    }

    // getter
    public get getId(): number {
        return this.id;
    }

    // method
    public getIdMethod(): number {
        return this.id;
    }
}

const patient: Patient = new Patient(1);

console.log(patient.id);            // 1
console.log(patient.getId);         // 1
console.log(patient.getIdMethod);   // function () { return this.id; }
console.log(patient.getIdMethod()); // 1

的console.log(患者);

enter image description here