I have developed a calculator app in LWC and every functionality works properly other than the array.
HTML
<template>
<lightning-card title="Calculator">
<lightning-layout multiple-rows>
<lightning-layout-item size="12" padding="around-medium">
<lightning-input data-inputname="FirstNum" type="number" value={result.firstNumber} onchange={numberHandler}>
</lightning-input>
</lightning-layout-item>
<lightning-layout-item size="12" padding="around-medium" >
<lightning-input data-inputname="SecondNum" value={result.secondNumber} type="number" onchange={numberHandler}>
</lightning-input>
</lightning-layout-item>
<!--button-->
<lightning-layout-item size="12" padding="around-medium">
<lightning-button-group>
<lightning-button label="Add" icon-name="utility:add" onclick={add}></lightning-button><br/>
<lightning-button label="Sub" icon-name="utility:dash" onclick={sub}></lightning-button><br/>
<lightning-button label="Multiply" icon-name="utility:close" onclick={multi}></lightning-button><br/>
<lightning-button label="Divide" icon-name="utility:magicwand" onclick={divi}></lightning-button><br/>
</lightning-button-group>
</lightning-layout-item>
<!--output-->
<div style="color:blue; font-size:larger ">
<lightning-layout-item size="12" padding="around-medium" >
<lightning-formatted-text data-inputname="Output" value={result.outputText} ></lightning-formatted-text>
</lightning-layout-item>
</div>
<!--checkbox-->
<lightning-layout-item size="12" padding="around-medium" >
<lightning-input type="checkbox" label="Show Previous values" onchange={prevValue}></lightning-input>
</lightning-layout-item>
<template if:true={previousValue}>
<template for:each={results} for:item="r">
<lightning-formatted-text key={r.id} value={r.Output}></lightning-formatted-text>
</template>
</template>
</lightning-layout>
</lightning-card>
</template>
js
import { LightningElement,track } from 'lwc';
export default class Calculator extends LightningElement {
@track outputText;
@track results =[];
@track result = {};
@track previousValue = false;
numberHandler(event){
const inputBox = event.target.dataset.inputname;
if(inputBox === 'FirstNum')
{
this.result.firstNumber = event.target.value;
console.log(this.result.firstNumber);
}
else if(inputBox === 'SecondNum')
{
this.result.secondNumber = event.target.value;
console.log(this.result.secondNumber);
}
}
add()
{
const firstN = parseInt(this.result.firstNumber);
const secondN = parseInt(this.result.secondNumber);
console.log(firstN);
console.log(secondN);
this.result.outputText = `Result of ${firstN} + ${secondN} is ${firstN + secondN}`;
console.log(this.result.outputText);
this.results.push({
FirstNum : this.result.firstNumber,
secondNum : this.result.secondNumber,
Output : this.result.outputText
});
console.log('THe value has been pushed');
}
sub()
{
const firstN = parseInt(this.result.firstNumber);
const secondN = parseInt(this.result.secondNumber);
console.log(firstN);
console.log(secondN);
this.result.outputText = `Result of ${firstN} - ${secondN} is ${firstN - secondN}`;
console.log(this.result.outputText);
this.results.push({
FirstNum : this.result.firstNumber,
secondNum : this.result.secondNumber,
Output : this.result.outputText
});
}
multi()
{
const firstN = parseInt(this.result.firstNumber);
const secondN = parseInt(this.result.secondNumber);
console.log(firstN);
console.log(secondN);
this.result.outputText = `Result of ${firstN} * ${secondN} is ${firstN * secondN}`;
console.log(this.result.outputText);
this.results.push({
FirstNum : this.result.firstNumber,
secondNum : this.result.secondNumber,
Output : this.result.outputText
});
}
divi()
{
const firstN = parseInt(this.result.firstNumber);
const secondN = parseInt(this.result.secondNumber);
console.log(firstN);
console.log(secondN);
this.result.outputText = `Result of ${firstN} / ${secondN} is ${firstN / secondN}`;
console.log(this.result.outputText);
this.results.push({
FirstNum : this.result.firstNumber,
secondNum : this.result.secondNumber,
Output : this.result.outputText
});
}
prevValue(event)
{
this.previousValue = event.target.checked;
}
}
When the 'Show Previous values' is checked it displays empty. Can anyone spot my mistake here?