に配列のクローンを作成します。私は2つのオブジェクトの配列を持っている:はtypescriptです
genericItems: Item[] = [];
backupData: Item[] = [];
私はgenericItems
データと私のHTMLテーブルを移入しています。テーブルは変更可能です。 backUpData
で行われたすべての変更を元に戻すためのリセットボタンがあります。この配列は、サービスによって取り込まれ:
getGenericItems(selected: Item) {
this.itemService.getGenericItems(selected).subscribe(
result => {
this.genericItems = result;
});
this.backupData = this.genericItems.slice();
}
私の考えは、ユーザの変更が最初の配列に反映されますと二番目の配列は、リセット動作のためのバックアップとして使用することができる、ということでした。私がここで直面している問題は、ユーザーがテーブル(genericItems [])を変更して、2番目の配列backupData
も変更されたときです。これはどうやって起こり、これを防ぐには?
アレイの浅いコピーを作成したようです。あなたが保持していたオブジェクトを変更して、変更を見ているように聞こえます。深いコピーを作成するか、データを表現するために別の方法を考え出す必要があります。 –
同じ参照を指しています。 lodashなどのライブラリを使用して新しい配列を返すと、その問題は発生しません。 –
'slice()'は別の配列から新しいオブジェクトを作成します。 – Arun