Class angular 中的订阅内未定义函数

Class function is undefined inside subscribe in angular

我有一个像下面这样的 class,它有一个名为 test 的函数。

export class Vehicle{

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

我正在从服务器返回车辆数据并访问测试功能,但是我收到一条错误消息 "Function test is undefined"。

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

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

您似乎没有将来自后端的 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))

在您的服务中执行相同的操作

使public函数

export class Vehicle{

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

将 class 导入到您要使用它的文件中:

import { Vehicle } from 'path_to_Vehicle.ts'

为class车辆声明一个变量;

VehicleClass: Vehicle = new Vehicle();

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

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