Угловой расчетный сигнал зависит от значения @Input
Я пишу код, используя Angular 16 Signals. Код вычислит сигнал, который также использует входное значение. Некоторые из моих компонентов работают нормально, но есть один компонент, который, когда я проверяю, входное значение все еще не определено, что означает, что вычисление сигнала выполняется до OnInit. Другой компонент, который работает нормально, выполняет OnInit перед вычислением значения. Мне просто интересно, каков фактический момент времени для вычисления сигнала? Есть ли какая-либо документация по этому поводу?
1 ответ
Здесь важно помнить, что эффект всегда выполняется один раз. Вот почему эффект может проявиться при первом доступе к сигналу. Это сильно отличается от, скажем, метода подписки для RxJS. Я думаю, что поспешно преобразованный код будет часто иметь неожиданные побочные эффекты из-за этой разницы.
Также нет никакой гарантии, когда именно эффект запустится (и это может измениться в будущем и, вероятно, изменится для компонентов сигнала), но наверняка он не сможет запуститься, если вы его еще не создали…
Поэтому вы также можете создать эффект в конструкторе, ngOnInit, ngAfterViewInit и т. д. Он просто должен быть в контексте инжектора, иначе вам нужно указать инжектор через параметр options.