угловой 5+, ngrx 4+
То, что я пытаюсь сделать, это вызвать ARTICLES_LIST_REQUEST
, когда инициализируется ArticlesListComponent
, связанный с path
/articles
.
Есть множество способов сделать это, например, используя dispatch
внутри ngOnInit
, используя dispatch
на охраннике, но вместо этого я хочу использовать @ngrx/router-store
, слушать ROUTER_NAVIGATION
и сопоставлять его с ARTICLES_LIST_REQUEST
(на самом деле ARTICLES_LIST_PARAMS_SET
, чтобы сохранить текущий маршрут params в магазин, но это не беда), сейчас с этим пара проблем.
Поскольку эффекты, даже те, которые зарегистрированы с помощью forFeature
, работают глобально, если бы я настроил этот эффект на прослушивание ROUTER_NAVIGATION
внутри нескольких модулей (статьи, люди, бренды и т. д.), он будет запускаться несколько раз, вызывая все действия одновременно, поэтому мне нужен способ отфильтровать его только для интересующего меня маршрута ... но как? Поскольку в угловом маршрутизаторе нет именованных маршрутов, а действие навигации возвращает снимок всего дерева, невозможно узнать, что конкретный маршрут только что активирован. Что я делаю в данный момент, так это проверяю и фильтрую по URL-адресу, например, начинается ли он с /articles
и не является ли следующий символ /
(чтобы отфильтровать /articles/<id>
. Но мне это очень не нравится, на самом деле не чувствую вроде бы благополучно покроет все случаи.
Раньше был способ приостановить/запустить/отписаться/подписать эффекты внутри компонента, что я не думаю, что это действительно возможно, но это переложило бы ответственность обратно на компонент, что было бы не намного лучше, чем диспетчеризация действие от компонента/гарда.
Должен ли я вообще не использовать для этого router-store
?