#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. Извините, я пока не смог это решить… Поскольку этот вопрос был проигнорирован, я решил поработать над более важными проблемами