Как приостановить изменение маршрута в событии маршрутизатора navigationStart - PullRequest
0 голосов
/ 24 августа 2018

В моем приложении у меня есть маршруты из пакетов (узловых модулей).Поэтому я не мог использовать canActivate или canDeactivate для маршрутов, определенных внутри узловых модулей.

Поэтому я начал подписываться на все изменения маршрутов в своем компоненте приложения и, исходя из условия, перенаправляю пользователя на разные маршруты.

Так как условие имеет вызов API, изменение маршрута не устанавливается в navigationStart, вместо этого оно завершает маршрутизацию на другую страницу, и после успешного вызова API происходит перенаправление на другой маршрут.

Как можноя справлюсь с этим?В любом случае можно приостановить изменение маршрута в navigationStart и включить маршрут после вызова API, или есть какой-либо другой способ определить canActivate для всех маршрутов, включая маршруты из узловых модулей.

1 Ответ

0 голосов
/ 11 октября 2018

Да, с помощью распознавателя вы можете добиться этого,

  1. Сначала необходимо создать службу распознавателя, которая будет реализовывать интерфейс "Разрешить".

  2. Внутри функции разрешения выполните вызов API.

  3. И добавьте службу в объявления маршрута следующим образом:> resol: {data: ResolveService}

  4. Итак, до тех пор, пока не будет выполнен вызов API, и он не вернет данные, он не запустит navigationStart. Пожалуйста, ознакомьтесь с этой статьей https://codeburst.io/understanding-resolvers-in-angular-736e9db71267

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...