Разобрался с проблемой.
Неправильно происходило удаление модуля.
В хуке beforeRouteEnter нет доступа до компонента через this, поэтому надо использовать next
beforeRouteEnter(to, from, next) {
next((vm) => {
// vm ссылается на компонент
});
},
Аналогично пробовал сделать и в хуке beforeRouteLeave для отключения модуля, но это не отрабатывало, не происходило удаление модуля. При каждом входе в раздел регистрировался дополнительный модуль, появлялся множественный вызов экшенов.
Внимательнее посмотрел в документации, оказалось что в beforeRouteLeave можно использовать this для работы с компонентом, переписал хук
beforeRouteLeave(to, from, next) {
this.$store.unregisterModule(name);
next();
},
Теперь все отрабатывает как надо