Как правильно использовать эффект сигнала Angular с массивами?
Я пытаюсь использовать новый эффект углового сигнала для прослушивания изменений сигнального массива объектов.
Но эффект никогда не вызывается.
Он вызывается только в том случае, если я отфильтрую один объект массива. Нажатие и обновление объекта массива не вызывает эффекта.
Вот мой код:
// this code trigger the effect
case "DELETE":
this.houses.update(((houses: House[]) => houses.filter((house: House) => house.id !== payload.old.id)));
break;
// this code doesn’t trigger the effect
case "INSERT":
this.houses.update((houses: House[]) => {const updatedHouses = houses.push(payload.new); return updatedHouses;})
break;
effect(() => {
this.filteredHouses = this.houses();
this.onFilter();
});
Если я сбросю значение сигнала и после этого задам новое значение, эффект будет вызван. Что я делаю не так?
1 ответ
Просто используйте оператор распространения, как показано ниже:
this.houses.update(houses => ([...houses, payload.new]));
Статья ниже даст четкое представление о сигналах .