¿Cómo realizo una redirección en un interceptor angular?
Hola chicos, soy bastante nuevo en angular, y tenía una pregunta sobre la mejor manera de manejar una redirección dentro de un interceptor.
Tengo ciertas páginas en mi aplicación a las que solo debería poder acceder si tengo una cuenta seleccionada. Entonces, si no se selecciona una cuenta, quiero la ruta que el usuario vaya a la página para seleccionar la cuenta.
El siguiente es mi intento fallido:
// within config
$httpProvider.interceptors.push(function($q, $injector){
return {
'request': function(config) {
var state = $injector.get('$state');
if(state.is('user.list')) {
var accountService = $injector.get('AccountService');
if(!accountService.accountSelected()){
// cancel the current request
var defer = $q.defer();
defer.resolve();
config.timeout = defer.promise;
state.go('account.select');
}
}
return config;
}
}
});
Esto está causando unBucle infinito para mi. Por alguna razón cuandostate.go
se dispara y se vuelve a interceptar, el estado sigue siendo "user.list"
Nota: Estoy usando ui-router, angular 1.2.6
Otra nota: El otro lugar en el que pensé poner esto fue en un bloque state.resolve.
¡Gracias por tu ayuda!