Сигналы в Angular довольно хороши. Однако я борюсь с обработкой нескольких сигналов. В очень упрощенном примере — сервис ExternalController, который определяет два сигнала controller1 и controller2.
Теперь я хочу вызвать метод, если значение сигнала изменится.
service ExternalController {
public controller1 = signal(null);
public controller2 = signal(null);
constructor() {
effect(() => {
if (controller1) do something
if (controller2) do something else
})
}
}
Проблема в том, что effect() срабатывает всякий раз, когда сигнал изменился. Но как узнать, какой сигнал сработал?





Обратные вызовы эффектов выполняются в реактивном контексте. Это означает, что он способен знать, от какого сигнала он зависит. Если вы вызываете только один сигнал, этот эффект будет вызван только при обновлении указанного сигнала.
Эффект не запускается для обновлений сигналов, которые вызываются вне него.
В вашем случае у вас может быть 2 эффекта:
effect(() => {
if (controller1()) {
...
}
})
effect(() => {
if (controller2()) {
...
}
})