Reputation: 1065
I'm getting subject error in my angular app when looping through json data and trying to assign that data to an array of a data type class. my code is:
..
import {UnMarkedData} from './mt-UnMarkedData';
...
this.httpClient.get(GlobalConstants.DigAlertServiceURL + "TicketUnMarkedGet" )
.subscribe((data: any) => {
//let ticket: string = data.UnMarked[0].Ticket;//this assignment works
var ticketData: UnMarkedData[];
for (let i=0;i<data.UnMarked.length; i++){
ticketData[i].ID = data.UnMarked[i].ID;//can't set property of undefined occurs here
ticketData[i].Ticket = data.UnMarked[i].Ticket;
ticketData[i].DateRcvd = this.FormatDate(data.UnMarked[i].DateRcvd);
}
The UnMarkedData class is:
export class UnMarkedData {
public ID: number;
public Ticket: string;
public DateRcvd: string;
constructor() {
}
}
ideas of where I'm going wrong here?
Thanks
Pete
I thought one of these would work, but still getting same error:
var ticketDatas:UnMarkedData [] = [];
//var ticketData: [{ID:number, Ticket:string, DateRcvd:string}];//gives error
for (let i=0;i<data.UnMarked.length; i++){
//let ticketData:UnMarkedData = new UnMarkedData();//get error
let ticketData:UnMarkedData = {ID:undefined, Ticket:undefined, DateRcvd:undefined};//get error
ticketData[i].ID = data.UnMarked[i].ID;
ticketData[i].Ticket = data.UnMarked[i].Ticket;
ticketData[i].DateRcvd = this.FormatDate(data.UnMarked[i].DateRcvd);
ticketDatas.push(ticketData);
}
Upvotes: 0
Views: 461
Reputation: 1065
this worked, just needed to look at it more closely: Thanks Randy and El-Mo, your ideas were right
var ticketDatas:UnMarkedData [] = [];
for (let i=0;i<data.UnMarked.length; i++){
let ticketData:UnMarkedData = new UnMarkedData();
ticketData.ID = data.UnMarked[i].ID;//was mistakenly assigning ticketData[i].ID
ticketData.Ticket = data.UnMarked[i].Ticket;
ticketData.DateRcvd = this.FormatDate(data.UnMarked[i].DateRcvd);
ticketDatas.push(ticketData);
}
Upvotes: 0
Reputation: 380
As Randy pointed in a comment, you have not initialised the array. So that means at runtime, you're attempting to access an index of undefined
;
var ticketData: UnMarkedData[] = []; // <-- Initialise the array as an empty list
for (let i=0;i<data.UnMarked.length; i++){
ticketData[i].ID = data.UnMarked[i].ID;
ticketData[i].Ticket = data.UnMarked[i].Ticket;
ticketData[i].DateRcvd = this.FormatDate(data.UnMarked[i].DateRcvd);
}
Upvotes: 2