Что эквивалентно защите CanLoad для автономных компонентов?
До Angular 15 я использовал шаблон SCAM, чтобы иметь один модуль для каждого компонента/директивы/канала.
Мое приложение содержит много лениво загружаемых страниц (один модуль на страницу) с защитой CanLoad для предотвращения ленивой загрузки (флаги функций,...).
Начиная с нг 15 (у меня 15.0.4) меняю все своиloadChildren
кloadComponent
(таким образом, каждая страница стала отдельным компонентом). Но... Как я там увидел :
Средства защиты CanLoad не применяются к loadComponent. Вместо этого следует использовать canActivate, точно так же, как если бы это было просто
Проблема: CanActivate не предотвращает загрузку, если это необходимо. Итак, теперь все мои страницы загружены :(.
Есть ли способ сохранить функциональность «CanLoad», но для loadComponent?
Спасибо !
РЕДАКТИРОВАТЬ : я пробовал с «canMatch»: это ничего не меняет.
1 ответ
Я цитирую исходный код здесь:
// Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not
// `loadComponent`. `canLoad` guards only block loading of child routes by design. This
// happens as a consequence of needing to descend into children for route matching immediately
// while component loading is deferred until route activation. Because `canLoad` guards can
// have side effects, we cannot execute them here so we instead skip preloading altogether
// when present. Lastly, it remains to be decided whether `canLoad` should behave this way
// at all. Code splitting and lazy loading is separate from client-side authorization checks
// and should not be used as a security measure to prevent loading of code.
Так что не ожидайтеcanLoad
работать сloadComponent()
.
canMatch()
хотя должно работать.