Ionic 4 перемещаться по событию жизненного цикла, не показывать страницу при перезагрузке - PullRequest
0 голосов
/ 30 октября 2018

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

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

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

1 Ответ

0 голосов
/ 31 октября 2018

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

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

...