How to fix "ERROR TypeError: Cannot set property 'id' of undefined "
You need to initialise your payload
property with an object before you assign it with any values.
payload : Data = {
id : undefined,
fromTime: undefined,
toTime: undefined ,
deviceType: undefined,
interval: undefined,
params: undefined
};
generatePayload(){
this.payload.id = "00:12:4b:00:19:7b:27:7",
this.payload.fromTime = "1554422400000",
this.payload.toTime = "1554508799000",
this.payload.deviceType = 'xxx' ,
this.payload.interval = 1000 ,
this.payload.params = this.selectedParameter
}
You need to instantiate this.payload
as an object (being typescript, an object of the correct shape) as you are only defining a type. Simply try using the new syntax to instantiate this.payload
as Data
.
public payload: Data;
generatePayload()
{
this.payload = new Data(); // will define an object with correct keys.
this.payload.id = "00:12:4b:00:19:7b:27:7",
this.payload.fromTime = "1554422400000",
this.payload.toTime = "1554508799000",
this.payload.deviceType = 'xxx' ,
this.payload.interval = 1000 ,
this.payload.params = this.selectedParameter
}
Because when you do payload: Data =
you are assigning the full object. In the function you already expect the payload
property to exist with an object value but since you have only named the property it will be undefined. Be sure to define an initial value for your property, eg payload : Data = {};
and then the assignment will work as expected.