Entonces, he transcrito la respuesta de @Bema a TypeScript, y así es como se ve:
namespace MyAwesomeApp {
function detectBackButton(
$rootScope: ng.IRootScopeService,
$location: ng.ILocationService
) {
let actualLocation: string = '';
$rootScope.$on('$locationChangeSuccess',
() => {
actualLocation = $location.path();
});
$rootScope.$watch(() => $location.path(),
(newLocation: string, oldLocation: string) => {
if (actualLocation === newLocation) {
}
});
}
detectBackButton.$inject = [
'$rootScope',
'$location'
];
angular
.module('app')
.run(detectBackButton);
}
No tenemos que crear una propiedad fuera del $rootScopeservicio, solo podemos hacer que nuestro código 'cambio exitoso en la ubicación' y 'cambio en la ubicación' se cierren sobre la actualLocationvariable local . A partir de ahí, puede hacer lo que quiera, como en el código original. Por mi parte, consideraría retransmitir un evento para que los controladores individuales puedan hacer lo que sea necesario, pero podría incluir acciones globales si fuera necesario. .
Gracias por la gran respuesta, y espero que esto ayude a otros usuarios de mecanografiado.