2017-01-22 2 views
3

Когда я нажимаю элемент в массив, элемент выдвигается, но проблема в том, что все элементы массива становятся такими же, как и последний элемент, нажатый.Угловой 2: Array.push не работает должным образом

pushspecification() { 
     this.specificationSaveDetailList.push(this.specificationsaveDetail); 
    } 

Вот код plunker: plunker_Code
В этом примере я plunker выбрать пункт из выпадающего списка и укажите описание и нажмите кнопку добавления и таблица заполняется с элемента массива.

ответ

5

Потому что вы связываете толкание одного и того же объекта со ссылкой на элемент массива. Поэтому, когда вы обновляете ссылку на объект specificationsaveDetail, он обновляет все элементы массива, поскольку они являются ссылками одного и того же элемента.

Чтобы заставить его работать, вам нужно создать новую копию объекта и нажать ее внутри массива. Ибо тогда же можно использовать Object.assign

pushspecification() { 
    this.specificationSaveDetailList.push(Object.assign({}, this.specificationsaveDetail)); 
} 

Demo Plunker

+0

Спасибо. Это сработало. – Amir

+0

@Amir Рад это знать, спасибо :) –

Смежные вопросы