I'm trying to create an incrementor and pass it a value that the user can increment or decrement. I've created the child component and passing it the value. I can change it, etc within the child component but not sure how I pass back a value and make sure it gets set back into the exact object in an array of objects. I can even get the value back to the parent using the output. I'm just not sure using the code below to set it back to the same property that was passed in. Sorry if this is an obvious answer.
Here is my array:
[
"NoseTemperature": {
"TrailerNumber": 4550,
"LoadNumber": 90878888,
"RefrUnitNumber": 1,
"TempSetting": 70,
"PlanFlag": false,
"EmployeeNumber": 999999,
"SetDT": "2022-06-20T05:02:44.727"
},
"MiddleTemperature": {
"TrailerNumber": 4550,
"LoadNumber": 87654321,
"RefrUnitNumber": 2,
"TempSetting": 31,
"PlanFlag": false,
"EmployeeNumber": 999999,
"SetDT": "2022-06-20T05:02:45.23"
},
"TailTemperature": {
"TrailerNumber": 4550,
"LoadNumber": 8787654,
"RefrUnitNumber": 3,
"TempSetting": "OFF",
"PlanFlag": false,
"EmployeeNumber": 9999999,
"SetDT": "2022-06-20T05:02:45.627"
}
]
Parent Component HTNL:
<app-incrementer [(value)]="temps?.NoseTemperature.TempSetting" [heading]="'NOSE'" (newItemEvent)="addItem($event)">
</app-incrementer>
<app-incrementer [value]=" temps?.MiddleTemperature?.TempSetting" (newItemEvent)="addItem($event)"
[heading]="'MIDDLE'"></app-incrementer>
<app-incrementer [value]="temps?.TailTemperature?.TempSetting" (newItemEvent)="addItem($event)" [heading]="'TAIL'">
</app-incrementer>
Child Component TS
import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
import { MatSliderChange } from '@angular/material/slider';
@Component({
selector: 'app-incrementer',
templateUrl: './incrementer.component.html',
styleUrls: ['./incrementer.component.scss'],
})
export class IncrementerComponent implements OnInit {
decrementOff: any
incrementOff: any;
public prevTempSetting: any;
@Input('value') value: any;
@Input('max') max: any;
@Input('min') min: any;
@Input('step') step: any;
@Input('heading') heading: any;
@Output() newItemEvent = new EventEmitter<any>();
constructor() { }
ngOnInit() {
}
onValueChange(event: MatSliderChange) {
this.value = event.value;
this.addNewItem(this.value);
}
addNewItem(value) {
this.newItemEvent.emit(value);
}
turnOnTemp() {
if (this.prevTempSetting) {
this.value = this.prevTempSetting
}
else { this.value = 0 };
}
turnOffTemp() {
this.prevTempSetting = this.value;
this.value = 'OFF';
console.log(this.value)
}
incrementValue() {
if (this.value > 119) { return } else {
this.value = this.value + 1
this.addNewItem(this.value);
}
}
decrementValue() {
if (this.value < -19) { return } else {
this.value = this.value - 1
this.addNewItem(this.value);
}
}
}