Что эквивалентно защите 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()хотя должно работать.

Другие вопросы по тегам