Ответ 1
@ngrx/router-store
существует так, чтобы хранилище могло быть единственный источник правды для состояния маршрутизации приложения.
Без него будет состояние приложения - текущий маршрут - не представлен в хранилище. Это означает, что отладка во время путешествия с использованием DevTools была бы невозможна, так как в магазине, представляющем маршрут, не было бы состояния, и не будет действий, представляющих изменения маршрута.
router-store
не заменяет маршрутизатор Angular; он просто подключает слушателей к действиям маршрутизации и самому маршрутизатору.
Когда вы испускаете действие маршрутизации с помощью go
action creator, действие "[Router] Go"
, содержащее заданный путь, вызывается router-store
, который затем вызывает соответствующий метод маршрутизатора. Когда router-store
слышит - от маршрутизатора - что маршрут изменился, он испускает действие "[Router] Update Location"
, представляющее изменение маршрута, и это действие видит состояние маршрутизатора в обновленном хранилище.
Если вместо использования создателя действия go
для выполнения изменения маршрута используется routerLink
, router-store
услышит изменение и выдает действие "[Router] Update Location"
, в котором будет обновлено состояние маршрутизатора хранилища.
Итак, независимо от того, изменен ли маршрут с помощью действий или более традиционных ссылок, хранилище всегда содержит состояние маршрутизатора.
При действиях "[Router] Update Location"
, представляющих изменения маршрута, вы можете отменить указанные изменения маршрута через DevTools - что-то, что было бы невозможно, если состояние маршрутизатора не было представлено в хранилище.
Если вы не использовали Redux DevTools, я бы рекомендовал вам проверить их: