javascript - Angular 2: Array.push fungerar inte korrekt
När jag trycker in objektet i arrayen, trycks objektet in men problemet är att alla objekt i arrayen blir samma som det sista objektet som trycktes in.
pushspecification() {
this.specificationSaveDetailList.push(this.specificationsaveDetail);
}
Här är plunker-koden: plunker_Code
I detta plunker-exempel väljer jag ett objekt från rullgardinsmenyn och anger beskrivningen och klickar på lägg till-knappen och tabellen fylls med arrayobjekt.
Svar #1
Eftersom du binder samma objekt med dess referens till ett arrayelement. Så när du uppdaterar specificationsaveDetail-objektet referensen uppdateras alla element i arrayen eftersom de är referenser till samma element.
För att få det att fungera måste du skapa en ny kopia av objektet och trycka in det i arrayen. För samma sak kan du använda Object.assign
pushspecification() {
this.specificationSaveDetailList.push(Object.assign({}, this.specificationsaveDetail));
}
Demo Plunker
Svar #2
Du kan använda det så här :
Array.push(Object.assign({}, this.utility));
