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));

Relaterade artiklar