Угловая маршрутизация не передает $routeChangeSuccess
Я работаю с AngularJS
а также angular_1_router
: https://docs.angularjs.org/api/ngComponentRouter.
Я хочу при навигации между маршрутами проверить, разрешена ли следующая маршрутизация или нет, если она не разрешена, пользователь будет перенаправлен на страницу 403.
В AngularJs API:
$ routeChangeSuccess
Трансляция после успешного изменения маршрута. Зависимости разрешения теперь доступны в свойстве current.locals.
Итак, я сделал следующее:
$rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
$rootRouter.recognize($rootRouter._currentInstruction.urlPath).then(function (path) {
if (path !== null) {
_handleForbiddenRouting(path, path.urlPath).then(function(result){
if(result !== null) {
$rootRouter.navigate([result]);
}
});
}
}, function (error) {
loggerFactory.error('An error occured during navigation.', error);
});
});
_handleForbiddenRouting
Функция проверит, разрешен ли маршрут, по которому я иду, если это не так, пользователь будет перенаправлен на имя маршрута в result
(что составляет 403 страницы).
В некоторых случаях некоторые представления не разрешаются (представление не отображается), поскольку во время вызова произошла ошибка. $routerOnActivate
(Например, ошибка XHR), в этом случае angular_1_router
не транслирует событие $routeChangeSuccess
Таким образом, функция _handleForbiddenRouting
не выполняется.
Как я могу решить это?
Редактировать:
Пожалуйста, не смешивайте между $routeProvider
а также ngComponentRouter
,