У меня есть компонент 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.
Спасибо
Сигналы срабатывают только при изменении значения, поэтому эта проверка вам вообще не нужна.
Эффект также срабатывает только при изменении сигналов внутри него.
Поэтому, когда эффект сработает, вы можете быть уверены, что фактическое значение внутри сигнала изменилось.
Это верно для всех примитивных типов (number
, boolean
и т. д.). Для ссылочных типов, таких как array
или object
, мы можем обновлять внутренние значения без активации сигнала, поэтому здесь нужно быть осторожными, но, глядя на предоставленные сигналы, это не тот случай.
constructor() {
effect(() => {
this.handleNormalizeChange();
this.updateFormattedCurrentPrice();
});
effect(() => {
this.updateValidators(this.minValue(), this.maxValue());
});
}
подойдут ли вам 3 эффекта с одним вызовом функции?