Я пытаюсь добавить защиту маршрута в свое угловое приложение.
Я динамически строю маршруты из JSON, который имеет следующую структуру
{
"path": "software-upgrade",
"title": "Software Upgrade",
"canActivate": "AuthGuard", // This is the route guard name
"isMFE": true,
"loadRemoteModule": {
"type": "manifest",
"remoteName": "software-upgrade",
"exposedModule": "./Module"
},
"moduleName": "SoftwareUpgradeModule"
},
Я использую значение canActivate при построении такого маршрута
routeArr.push({
path: route.path,
canActivate: [AuthGuard], // this works
// canActivate: [route.canActivate], // this does not work even though it is fetching the same value from JSON
});
Я получаю следующую ошибку в консоли, если использую значение из JSON, но то же самое работает, если я напрямую указываю значение охранника.
Есть ли способ справиться с этим?
где route.canActivate ? Это уже загруженный файл или вы хотите динамически загружать файл и функцию?
я получаю этот файл через REST API, и он доступен во время построения маршрута
@YongShun нет, это не ответ на мой вопрос
извините, мне не удалось получить файл через REST API? Вы имеете в виду, что файл уже находится в базе кода и упакован, и вы динамически загружаете его? под извлечением файла для меня это означает, что вы загружаете файл с сервера
Я имел в виду, что у меня есть файл в активах, и я получаю его через угловой http-вызов. В любом случае есть решение ниже



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно создать карту объектов, где ключом будет authGuard, а значением AuthGuard (фактический импорт).
import { AuthGuard } from 'some path';
export const DYNAMIC_ROUTING_MAP = {
'authGuard': AuthGuard,
...
}
Тогда при динамической маршрутизации мы можем просто получить ссылку и установить ее!
routeArr.push({
path: route.path,
canActivate: [DYNAMIC_ROUTING_MAP[route.canActivate]], // <- changed here!
});
Отвечает ли это на ваш вопрос? Динамическая загрузка класса машинописного текста (отражение для машинописного текста)