Задать вопрос

Как на $routeChangeStart запретить смену роута чтобы после сработал $routeChangeError?

Есть связка событий
$rootScope.$on('$routeChangeStart', (event, next, current) => {
			console.log('current', current, next);
			event.preventDefault();
		});

		$rootScope.$on('$routeChangeError', (event, current, prevoius, reason) => {
			console.log('err', [event, current, prevoius, reason]);
		});


Событие routeChangeStart срабатывает и event.preventDefault() запрещает смену пути, но событие routeChangeError после этого не срабатывает.
Нужно запретить смену пути так, чтобы сработало событие routeChangeError и я в него мог передать причину, почему я запретил смену пути.
https://docs.angularjs.org/api/ngRoute/service/$route
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
После preventDefault ничего и не должно сработать.
routeChangeError возникает, когда один из resolve промисов реджектится, собственно лучше проверку повесить в state.resolve, а не в $routeChangeStart.
Вообще с выходом 1.x UI-router всё стало намного круче в этом плане. В том числе там можно делать то, что вы хотите, а именно transition hooks.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы