Можно деактивировать с неработающими дочерними маршрутами

У меня есть маршрутизация, как показано ниже:

{
  path: "home",
  children: [{
    path: "dashboard",
    children: [{
      path: "user",
      canDeactivate: [CanWeDeactivateThis]
    }]
  }]
}

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

Не уверен, как решить эту проблему.

Угловая версия 6.1.0

Я следил за этой веткой, но без помощи.

Кто-нибудь может помочь, пожалуйста?

Кстати, приведенные выше определения маршрутизации являются частью лениво загруженного углового модуля.

1 ответ

{
  path: "home",
  children: [{
    path: "dashboard",
    children: [{
      path: "user",
      component : "user",
      canDeactivate: [CanWeDeactivateThis]
    }]
  }]
}

Вы должны добавить имя компонента для детей. Вы также можете попробовать приведенный ниже код, если хотите применить метод canDeactivate ко всем дочерним элементам.

{
      path: "home",
      children: [{
        path: "dashboard",
        canDeactivate: [CanWeDeactivateThis],
        children: [{
          path: "user",
          component : "user"          
        }]
      }]
    }

Если функциональный модуль загружается асинхронно, защита CanLoad проверяется перед загрузкой модуля. Если какой-либо охранник возвращает ложь, незавершенные охранники будут отменены, а вся навигация отменена. Так что проверьте, есть ли у вас охранник CanLoad.

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