Angular - это популярная платформа для разработки веб-приложений. Один из основных элементов Angular - это модули, который может быть загружен в приложение по мере необходимости, такой подход называется ленивой загрузкой. Для управления доступом к лениво загружаемым модулям используется концепция охранников (guards).
В данном вопросе речь идет о создании охранника для лениво загружаемых модулей в Angular. Правильный ответ - это "Используя сервис с интерфейсом CanLoad".
CanLoad
- это интерфейс, который определяет метод guard, который решает, может ли модуль быть загружен лениво или нет. Он используется в Angular для управления доступом к лениво загружаемым модулям. Этот интерфейс может быть реализован в классе охранника, который затем можно использовать в маршрутах.
Использование интерфейса CanLoad
заключается в создании класса, реализующего этот интерфейс и метода canLoad()
. Этот метод возвращает boolean
или Observable<boolean>
или Promise<boolean>
. Если метод возвращает true
, то Angular загружает модуль, иначе - нет.
Вот пример класса, реализующего интерфейс CanLoad
:
import { Injectable } from '@angular/core';
import { CanLoad, Route, UrlSegment } from '@angular/router';
@Injectable({
providedIn: 'root',
})
export class CanLoadGuard implements CanLoad {
canLoad(route: Route, segments: UrlSegment[]): boolean {
return confirm('Do you wish to proceed?');
}
}
Затем вы можете использовать этот охранник в маршруте, где вы указываете canLoad
с классом охранника.
{
path: 'admin',
canLoad: [CanLoadGuard],
loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule),
}
Модуль загрузится в случае, если метод canLoad()
возвращает true
, и останется не загруженным в обратном случае.
Таким образом, использование интерфейса CanLoad
- это эффективный и надежный способ для создания охранников для лениво загружаемых модулей в Angular.