Изменение цвета элемента при нажатии Angular

#angular #ionic4

#angular #ionic4

Вопрос:

У меня есть список, когда я нажимаю на элемент, я хотел бы изменить цвет этого элемента.

Я делаю это :

HTML

[ngStyle]="{'color': item.isClicked ? 'grey': ''}"

ts

   itemSelected(item) {
    if (item.isClicked) {
      item.isClicked = true;
    } else {
      item.isClicked = true;
    }
    this.router.navigate(['/details', { data: JSON.stringify(item) }]);
  
   }
  

это работает, но когда я обновляю страницу, она не работает. как мне сохранить?

спасибо за вашу помощь!

Ответ №1:

Вы можете сохранить элемент в локальном хранилище, прежде чем покинуть страницу. И восстановление элемента из локального хранилища при запуске компонента:

 ngOnInit() {
  try {
    this.item = JSON.parse(localStorage.getItem('item'));
  } catch (err) {}
}
...
itemSelected(item) {
  if (item.isClicked) {
    item.isClicked = true;
  } else {
    item.isClicked = true;
  }
  const data = JSON.stringify(item);
  localStorage.setItem('item', data);
  this.router.navigate(['/details', { data }]);
}
  

Комментарии:

1. спасибо за вашу помощь, но ничего не изменилось. почему JSON.parse(localStorage.getItem('item')) ?

Ответ №2:

Вам необходимо сохранить эту информацию в хранилище сеансов или локальном хранилище (если вы хотите большей сохраняемости, а не просто обновления страницы).

Кроме того, пожалуйста, просмотрите свой код один раз. Вы проверяете, имеет ли значение item.isclicked значение true, и снова присваиваете ему значение true. То же самое в блоке else.