Ionic Angular Lazy Загрузка маршрутов и навигация через сервис - PullRequest
0 голосов
/ 04 ноября 2019

Я создаю приложение Ionic / Angular и борюсь с маршрутизацией.

Я не пользуюсь никакими средствами защиты, вместо этого я выбрал глобальную службу, которая будет перенаправлять пользователя на различные страницы, например, я проверяючтобы увидеть, если они вошли в систему, и если нет, они перенаправляются на страницу ./authentication,

, если пользователь вошел в систему, но не добавил имя, которое он направляет на ./authentication/firstname, и, как мудрыйесли они имеют полный профиль, они могут быть направлены на главный домашний экран, который является страницей Ionic tabs на ./tabs/home.

Все это работает с использованием следующих маршрутов, однако, если пользователь аутентифицирован, он автоматически направляет их на страницу /tab/home, что, конечно, имеет смысл, поскольку маршруты указывают это, но это всегда будет загружать страницу /tab/homeдаже если они должны быть направлены на другую страницу для обновления поля профиля, и это вызывает некоторые проблемы при инициализации других служб, прежде чем они должны быть.

Я пробовал несколько различных подходов, но в целомон заканчивается /tabs/home, маршрут не может быть найден или не инициализирован. Есть ли способ ленивой загрузки двух модулей, например, при запуске приложения запускаются страницы аутентификации и вкладки? или есть какой-то другой действительно умный способ справиться с этой ситуацией, который я еще не понял?

// main app.routing.ts

const routes: Routes = [{ 
    path: 'authentication',
    loadChildren: "./authentication.module#AuthenticationPageModule"
  },{ 
    path: '',
    redirectTo: '/tabs/home',
    pathMatch: 'full'
  },{ 
    path: '', 
    loadChildren: "./tabs/tabs.module#TabsPageModule" // tabs get loaded in here
  }
];

authentication.routing.ts здесь кактак:

const routes: Routes = [
  {
    path: '',
    component: AuthenticationPage,
  }, {
    path: 'login',
    children: [{ path: '', loadChildren: './login/login.module#LoginPageModule'  }]
  }, {
    path: 'register',
    children: [{ path: '', loadChildren: './registration/registration.module#RegistrationPageModule'  }]
  }
];

и маршрутизация вкладок определяется здесь в ./tabs/tabs.routing.ts

const routes: Routes = [{
  path: 'tab',
  component: TabsPage,
  children: [
  {
    path: 'home',
    children: [{ path: '', loadChildren: "./home/home.module#HomePageModule"  }]
  }, { 
    path: '',
    redirectTo: '/tab',
    pathMatch: 'full'
  }
]},{ 
  path: '',
  redirectTo: '/tab',
  pathMatch: 'full'
}
];

Я думаю, проблема в том, что я пытаюсь загрузить вкладкидо того, как они были официально загружены, но как подготовить такие страницы или загрузить их, используя другой глобальный сервис, который отправляет пользователя туда, куда ему нужно пройти по маршруту

...