在角订阅中未定义类函数

时间:2019-05-16 13:56:27

标签: angular rxjs subscribe

我有一个像下面这样的类,它具有一个称为test的函数。

export class Vehicle{

    plate:String;
    test(){
        console.log("test");
    }
}

我正在从服务器返回车辆数据并访问Test功能,但是却收到一条错误消息,提示“功能测试未定义”。

this.vehicleService.get(this.vehicleId).subscribe((vehicle:Vehicle)=>{
                    vehicle.test(); //test function here is undefined.
                });

我知道数据会以某种方式转换为Vehicle类型的对象。但是我失去了对其属性的访问(在本例中为测试功能)。 在这种情况下,有什么方法可以访问测试功能?

2 个答案:

答案 0 :(得分:1)

似乎您没有将来自后端的json车辆数据转换为Vehicle对象

export class Vehicle{

    plate:String;
    constructor(params: Vehicle) { 
       Object.assign(this, params);
    }

    test(){
        console.log("test");
    }
}

现在您可以通过此代码创建Vehicle的实例

const instance = new Vehicle({plate:'xxx'})

,您可以使用.map(item => return new Vehicle(item))

在服务中执行相同的操作

答案 1 :(得分:0)

公开功能

export class Vehicle{

   plate:String;
   public test(){
     console.log("test");
   }
}

将该类导入文件中要使用的位置:

import { Vehicle } from 'path_to_Vehicle.ts'

为Vehicle类声明一个变量;

VehicleClass: Vehicle = new Vehicle();

现在您可以访问Vehicle Class实现的方法test(),如下所示:

this.vehicleService.get(this.vehicleId).subscribe((vehicle:Vehicle)=>{
   this.VehicleClass.test();
});