У меня есть ситуация, когда я использовал Resolve для предварительной загрузки некоторых данных из удаленного источника по HTTP-вызову до перехода к компоненту. Теперь мне нужно реализовать некоторую защитную логику, которая требует, чтобы в зависимости от некоторых условий эти данные были предварительно загружены, чтобы проверить некоторые поля на нем против текущего пользователя.
Я бы хотел избежать того же запроса к CanActivate
в CanActivate
а затем сразу же после этого в Resolve
.
Есть ли способ получить доступ к данным маршрута из CanActivate
или конфигурации маршрута, чтобы временно переопределить преобразователь и просто установить значение для объекта данных, так как у меня есть то, что я собираюсь запросить?
Я попытался уйти с чем-то простым
route.data['myData'] = value;
Но это ошибка, потому что "объект не расширяется".
Я также пробовал что-то вроде:
this.router.routerState.root.data['myData'] = value;
Который не создает каких - либо ошибок, однако эти данные не сохранились в route.data
элемент Resolve.resolve()
метод.
Я бы хотел избежать слишком привычного или взломанного, например, временно хранить объект в Сервисе как какой-то кеш. Существует ли какой-либо стандартный механизм для передачи данных между внутренними элементами маршрутизатора для поддержки расширенной предварительной выборки и таких вещей, как проверки прав собственности?
РЕДАКТИРОВАНИЕ Маршрутизатор работает, если вы введете маршрутизатор в конструктор класса Resolve
и получите доступ к нему аналогичным образом. Но это нужно очистить после этого, иначе он будет сохраняться между навигационными вызовами.