Как получить данные в зависимости от маршрута в @ngrx? - PullRequest
0 голосов
/ 05 февраля 2019

Мы создаем веб-приложение, в котором пользователь должен нажимать на списки, чтобы перейти к определенному виду редактирования.Например, на целевой странице пользователь выбирает client , затем agent и затем попадает в представление редактирования этого агента.URL в этом случае будет содержать идентификаторы: /client/4/agent/7/edit. @ ngrx / router-store используется для обработки изменений URL-адреса, поэтому при прямом доступе к вышеуказанному URL-адресу появляется окно редактирования, которое работает нормально.

Приложение также содержит крошку, показывает не идентификатор, а имена частей пути: Клиент: Компания> Агент: Почтовая служба> Редактировать при client = { id: 4, name: 'Company' } и agent = { id: 7, name: 'Postal' }.Мы обычно выбираем эти данные (client и agent) при щелчке по записи в списке корреспондентов.

Однако при прямом доступе к URL-адресу, подобному /client/4/agent/7/edit, client -объект не сохраняетсяэто содержит имя. Как я могу получить объект, который принадлежит маршруту, когда к URL-адресу обращаются напрямую с избыточным доступом? Я знаю, как я мог бы взломать это в приложение, но поток данных должен остатьсякрасиво и чисто reduxy .

Вещи, которые я рассмотрел:

  • Проверка наличия client, agent и т. д. в каждом компоненте и выборкаих, если они не существуют.Это может привести к большим накладным расходам, а также, кроме того, логика должна идти в селекторы, которые не могут инициировать действие.
  • Использование службы для проверки, если данные уже есть - если нет, загрузите их.Будет проверяться при каждом изменении URL-адреса и может также замедлять работу приложения.
  • Запускать выборку данных при начальной загрузке приложения - где это сделать?AppComponent?

Я также открыт для реструктуризации всего приложения (используйте другую маршрутизацию, введите @ ngrx / Effects, переопределите API и т. Д.)

...