Эффекты ввода угловых сигналов

У меня есть компонент angular с тремя входными сигналами:


  initialPrice = input<number | undefined>();
  maxValue = input<number>(999999999);
  minValue = input<number>(0);

Я хочу запускать эффекты всякий раз, когда изменяется ввод, и запускать функции:

      effect(() => {
        this.handleNormalizeChange();
        this.updateFormattedCurrentPrice();
        this.updateValidators(this.minValue(), this.maxValue());
      });

Вопрос: как я могу активировать только 1 функцию, если измененный ввод изменяется, а не все функции каждый раз, когда выполняется эффект?

Мне нужна в основном функциональность ngOnChanges с previousValue и currentValue.

Спасибо

подойдут ли вам 3 эффекта с одним вызовом функции?

Andrei 08.07.2024 10:43
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сигналы срабатывают только при изменении значения, поэтому эта проверка вам вообще не нужна.

Эффект также срабатывает только при изменении сигналов внутри него.

Поэтому, когда эффект сработает, вы можете быть уверены, что фактическое значение внутри сигнала изменилось.

Это верно для всех примитивных типов (number, boolean и т. д.). Для ссылочных типов, таких как array или object, мы можем обновлять внутренние значения без активации сигнала, поэтому здесь нужно быть осторожными, но, глядя на предоставленные сигналы, это не тот случай.

constructor() {
    effect(() => {
        this.handleNormalizeChange();
        this.updateFormattedCurrentPrice();
    });

    effect(() => {
        this.updateValidators(this.minValue(), this.maxValue());
    });
}

Другие вопросы по теме