Я пытаюсь использовать функцию карты массива для отображения моих данных в конкретный класс. Проект находится в Угловом.Array.map() to Class дает undefined на этом
Так что я:
me.$http({
url: me.appConfig.api + `customer/${customer.number}/stock/warehouses`,
method: 'get'
}).then((r: any) => {
def.resolve(r.data.map(Warehouse));
}).catch(def.reject);
Довольно основной до сих пор. Тогда в моем классе Warehouse это выглядит следующим образом:
export class Warehouse {
code: string;
location: string;
weight: number;
count: number;
late: number;
stock?: Stock[];
constructor(data?: any) {
console.debug('test', data);
this.code = 'test';
if (data) {
this.code = data.code;
this.location = data.location;
this.weight = data.weight;
this.count = data.count;
this.late = data.late;
}
}
}
Так просто копия значений, но странно то, что уже ошибки на this.code = 'test'
, то я получаю ошибку:
TypeError: Cannot set property 'code' of undefined
at Warehouse (main.bundle.js:2218:19)
at Array.map (native)
Есть ли подсказка, почему это происходит?
Образец данных:
[
{
"code": "SQD",
"location": "35,16161;6,31561",
"weight": 3200,
"count": 18,
"late": 18
},
{
"code": "GQZ",
"location": "35,16161;6,31561",
"weight": 321,
"count": 20,
"late": 18
}
]
Можете ли вы поделиться образцами данных? Кроме того, я думаю, проблема связана с 'this', а не с' data' – Rajesh
да, проблема кроется в «этом», поэтому я сделал 'this.code = 'test'', который не удался – Kiwi
В моем понимании, вы будет иметь что-то вроде '.map (x => new Warehouse (x))' – Rajesh