Функция класса не определена внутри подписки в угловых - PullRequest
0 голосов
/ 16 мая 2019

У меня есть класс, подобный ниже, в котором есть функция с именем test.

export class Vehicle{

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

Я возвращаю данные транспортного средства с сервера и получаю доступ к функции «Тест», однако получаю сообщение об ошибке «Функциональный тест не определен».

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

Я понимаю, что данные каким-то образом преобразуются в объект с типом Vehicle. Но я теряю доступ к его свойствам (в этом случае тестовая функция). Есть ли способ получить доступ к функции тестирования в этом сценарии?

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Похоже, вы не конвертировали 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))

0 голосов
/ 16 мая 2019

Обнародовать функцию

export class Vehicle{

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

Импортируйте класс в свой файл, где вы хотите его использовать:

import { Vehicle } from 'path_to_Vehicle.ts'

Объявить переменную для класса Vehicle;

VehicleClass: Vehicle = new Vehicle();

Теперь вы можете получить доступ к методу test () класса Vehicle, реализующему следующее:

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