Как стать автором
Обновить

Комментарии 4

Основа здесь - rxjs, а он, как писалось тут, 'никогда' не будет замещен signal'ами. Про относительность 'никогда' мы все все понимаем, но сейчас функционал разнится, особенно в части асинхронности. Та же логика executors из библиотеки, вероятно, в некоторой степени может быть замещена signal'ами, но либа больше про rxjs, чем про Angular, не у всех они есть) В общем, каждой задаче - свой инструмент, и это - ещё одна опция.

rxjs, как я понимаю, подходит для асинхронщины, когда мы ждем каких-то данных, и при поступлении пачек этих данных мы их обрабатываем. Сигналы, в свою очередь, - для синхронных операций (в нашем примере событие нажатия на кнопку).

Я спрашиваю потому, что ваши примеры упрощают жизнь для input/output, а с 19 версии документация официально input и output предлагает переводить на сигналы.

Так... По порядку:
signals во многом направлены на замещение механизма detectChanges в целях оптимизации рендеринга. В этой части никакой конкуренции с представленным решением нет.
В части передачи состояний все гораздо прозаичнее: я не вижу никакого ясного выигрыша от signals в задаче передачи данных между компонентами.
Есть у нас таблица элементов и input, при вводе таблица фильтруется в соответствии со значением input. Каким образом передавать состояние между элементами? Примитивный (и не самый лучший, согласен) пример с @Input - ужасная затея, скорее мы пойдем в Subject/ReplaySubject. Но как передать эту подписку между компонентами? Нужен сервис, содержащий объект подписки, оба компонента ссылаются на этот сервис и работают с подпиской. Signals, в этом смысле не предлагает ничего нового - мы так же должны будем создать сервис для передачи нашего signal. Со временем конструкторы компонентов распухают от ссылок на всевозможные сервисы, создавая сонм весьма неприятных связей. В моих проектах большинство компонентов зависят только от сервиса PostboyService, подписываясь на любое интересующее событие, не зная ничего об обработчиках/отправителях сообщений внутри системы.
P.S. За комментарий спасибо, учту на будущее, что стоит подсветить)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации