Ленивая загрузка модуля с пустым путем

#angular #typescript

#angular #typescript

Вопрос:

У меня следующая настройка:

 app-module (root module)
     frontend-module
     backend-module
    auth-module
 

Модуль внешнего интерфейса должен отвечать за следующие пути:

 /
/overview
/settings
/help
 

Серверный модуль для всех путей, подобных этому:

 /backend/**
 

И модуль аутентификации для этих путей:

 /sign-in
/sign-up
/sign-out
 

Если пользователь не вошел в систему, он всегда должен быть перенаправлен /sign-in .

Как вы можете видеть выше, я хочу, чтобы интерфейс и серверный модуль загружались лениво. Поэтому всякий раз, когда пользователь заходит на веб-сайт, он должен загружаться довольно быстро, поскольку модуль аутентификации очень легкий. Если затем он введет свое имя и пароль, он должен быть перенаправлен на /overview , который находится в интерфейсном модуле (тогда он должен загружаться лениво).


Моя проблема в том, что я не могу заставить работать отложенную загрузку интерфейсного модуля. Я попробовал следующее:

 @NgModule({
    imports: [
        RouterModule.forRoot([
            {
                path: 'backend',
                loadChildren: 'app/ backend/backend.module#BackendModule',
                canLoad: [AdminAuthGuardService]
            },
            {
                path: '',
                loadChildren: 'app/ frontend/frontend.module#FrontendModule',
                canLoad: [AuthGuardService]
            }
        ])
    ],
    exports: [RouterModule]
})

export class AppRoutingModule {

}
 

Конфигурация маршрутизации модуля аутентификации загружается с готовностью и определяет пути, упомянутые выше (без какой-либо защиты). Но поскольку защита модуля интерфейса определяется как пустой путь, предполагается, что /sign-in он также является частью модуля интерфейса. Серверный модуль работает так, как ожидалось.


Возможно ли вообще как-то это сделать?

Еще одна вещь, которая может быть проблемой, заключается в том, что корневой модуль даже не знает, какие пути допустимы, поэтому при текущей настройке ему все равно придется загружать модуль frondend, чтобы он мог проверять пути, или я ошибаюсь?


Для пояснения: моя идея заключалась в том, чтобы быстро реагировать, если пользователь не авторизован, таким образом, чтобы модуль аутентификации загружался немедленно. После того, как angular выполнил свою работу, я бы выдал загрузку модуля интерфейса. Таким образом, пока пользователь занят входом в систему, фактическое приложение будет загружаться в фоновом режиме

Любые идеи / предложения / рекомендации приветствуются. Но я действительно не хочу взламывать. Если angular этого не предлагает, я отправлю запрос функции, в котором этот вариант использования можно было бы обсудить подробнее, но я не хочу делать это возможным любой ценой

Комментарии:

1. Вы решили эту проблему. Я сталкиваюсь с той же проблемой. после обновления angular-cli до 1.0.0 -ошибка получения rc ERROR in Cannot read property loadChildren' of null

2. Извините, я пока не смог это решить… Поскольку этот вопрос был проигнорирован, я решил поработать над более важными проблемами