Я сохраняю изменения в массиве в localStoage
, используя метод save()
.Я использую его в методах remove()
и add()
, а элементы удаляются или добавляются в localStoage
. Но когда я меняю переменную this.Mycollection
, которая хранит мой статический массив в методе getPictures()
на переменную this.getCollection
для динамического отображения данных после добавления или удаления элементов изменения происходят только после перезагрузки страницы.Кроме того, когда я очищаю localStoage
, я получаю сообщение об ошибке:
SyntaxError: Неожиданный токен u в JSON в позиции 0
Мне нужно реализовать сохранениезаписи галереи в localStorage
, поэтому при перезагрузке страницы удаляются или добавляются все изменения.
import {Injectable} from '@angular/core';
import {myCollection} from './gallery-data'; // my static array
import {Picture} from "./gallery-module/gallery/Picture"; // interface
@Injectable({
providedIn: 'root'
})
export class GalleryService {
Mycollection: Picture[] = myCollection;
getCollection = JSON.parse(localStorage["Collection"]);
constructor() {}
save() {
localStorage["Collection"] = JSON.stringify(this.Mycollection);
}
getPictures(): Picture[] {
return (this.Mycollection);
}
remove(picId: number): void{
this.Mycollection = this.Mycollection.filter(p => p.id !== picId);
this.save();
}
add(title: string, url: string): void {
const id: number = Math.max(0, ...this.Mycollection.map(({id}) => id)) + 1;
const post: Picture = {
title,
url,
id
};
this.Mycollection.unshift(post);
this.save();
}
}