Ionic 4 перемещается по событию жизненного цикла, предотвращает отображение страницы при перезагрузке

У меня есть страница, которая не должна загружаться, если пользователь не вошел в систему (данные учетной записи). Однако, если пользователь переходит по этому прямому URL-адресу, я бы предпочел направить его на страницу входа. Сейчас делаю вот что:

ionViewWillEnter() { 
  if (notLoggedIn()){
    this.navCtrl.navigateRoot('/tabs/(account:account/login)');
    console.info('No user defined when at registration page, redirecting');
    }
  }

Я получаю консоль для входа, но страница не переходит на нужную страницу (URL-адрес изменяется, но отображается старая страница).

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
835
1

Ответы 1

Некоторые из событий жизненного цикла Ionic не запускаются в Ionic 4, я думаю, из-за переключения на угловую маршрутизацию вместо ионной маршрутизации. В частности, в документации NavController он показывает, что ionViewCanEnter работает с методом navCtrl.push, а не новым способом, которым является navCtrl.navigateRoot или вперед / назад (это то, что я сначала пробовал до того, что набрал выше).

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

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): boolean {

    if (this.userService.isLoggedIn()) { return true; }
    this.navCtrl.navigateRoot('/tabs/(account:account/login)');
    return false;

  }

Работает отлично.

Хорошая документация здесь для всех, кто изучает Ionic и Angular вместе

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