фильтров: они и рендерят, и форму создают, да и еще и данные обновляют.
Сами фильтры это просто инпуты с форм контролом
За всё это отвечает обёрточный компонент. Я подумал, что будет нормальным использовать его, чтобы связать всё вместе.
> Для начала не совсем понимаю зачем тут нужен ngrx
Да, не нужен, я просто прокрастинирую из-за проблем со стейтом.
> начать смотреть в сторону динамического построения фильтров и отказаться от смеси reactive + template driven
Хм, насколько я понимаю, здесь нет темплейт драйвэн форм совсем. В темплейтах есть только представление фильтра, которое нам вообще не важно, и прикрученный форм контрол. Но я понимаю, к чему ты ведёшь. Вообще подход не очень сильно меняется, т.к. конфигурации никакой по сути нет, только компонент фильтра (инпут) и его имя. Не стал делать динамику, потому что нет времени разбираться, но было бы хорошо.
> Сделаю допущение, что форма имеет один уровень вложности
Да, так и есть
> Для начала необходимо создать некий сервис-хранилище. Его интерфейс должен быть очень простой: положить значение и достать значение. Так же будет очень удобно, если сервис будет предоставлять готовый FormGroup для работы.
Не очень понимаю, как тут поступать с форм группой. Просто пихать в неё контролы, чтобы инкапсулировать обновление стейта в самом сервисе?
> Директива Filter будет через DI получать инстанс компонента, и через сервис управлять FormGroup
Ну в общем поменять направление работы с группой, вместо всего и вся в одном месте (в компоненте-обёртке) вынести в сервис и директиву, выходит?
Тогда директива будет подписываться на стейт своего фильтра по имени и отвечать за рендеринг?
Директива будет просить сервис предоставить form control. Все обновление внутри сервиса. Пока что это самый быстрый способ. Так же можно сделать структурную директиву на уровень выше, и чтобы она была этим сервисом.
Обсуждают сегодня