TypeScript myFunction не является функцией - PullRequest
0 голосов
/ 21 мая 2019

Я работаю в Angular, и у меня следующая ситуация:

my.service.ts имеет этот класс:

export class MyClass {
    MyList: string[] = [];
    MyString: string = '';

    createString(): void {
        this.MyList.forEach(s => {
            this.MyString += s + ', ';
        });
    }
}

И my.component.ts называет это так:

myData: MyClass[] = [];

this.myService.getMyData().subscribe(res => {
    myData = res;
    if (myData.length > 0) {
        this.myData.forEach(x => x.createString());
    }
});

VS Code распознает функцию createString как метод MyClass, но я все еще получаю ошибку:

ОШИБКА TypeError: x.createString не является функцией

Есть объяснения?

РЕДАКТИРОВАТЬ : Данные поступают с внутреннего интерфейса, и у серверной модели этот метод отсутствует. Может в этом проблема?

1 Ответ

3 голосов
/ 21 мая 2019

Объект, поступающий с сервера, будет простым объектом, а не экземпляром класса MyClass.Вы можете создать экземпляры MyClass и присвоить значения из объекта сервера экземпляру класса:

this.myService.getMyData().subscribe(res => {
    myData = res.map(o => Object.assign(new MyClass(), o));
    if (myData.length > 0) {
        this.myData.forEach(x => x.createString());
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...