У меня есть angular проект, в котором я пытаюсь захватить событие кнопки «Назад», чтобы вызвать мою собственную функцию.
Я использую onpopstate
, из window
( js ) и platformLocation
( angular ), и функция не всегда срабатывает.
У меня есть логин, который перенаправляет на мои страницы, и я могу пройти двумя способами.
- Как новый пользователь, в форме регистрации в моем приложении.В этом случае функция срабатывает
- Доступ с существующей учетной записи, к любой странице.В этом случае функция никогда не работает.На самом деле, если я перехожу на страницу регистрации, она тоже не работает.
Я тоже пробовал с window.onbeforeunload
и всегда выполняю ее, но когда я пытаюсь перенаправить на другую страницу (вот чтоя хочу сделать) и запретить навигацию по умолчанию, не работает.
какая-то идея о том, что происходит?
Я ценю вашу помощь
РЕДАКТИРОВАТЬ
это основной код в моей службе.
Сервисный код
@Injectable()
export class BackService {
constructor(
private _platformLocation: PlatformLocation
) {
vm.setBackEvent();
}
/**
* NAvigation from browser
*/
setBackEvent() {
const vm = this;
// JS ** this trigger the function but dont navigate
// window.onbeforeunload = function (e) {
// console.log('onbbeforeunload');
// location.href = url;
// return ;
// };
// JS ** this doesnt work always
// window.onpopstate = (e) => {
// console.log('window onpopstate');
// location.href = url;
// }
// Angular ** his doesnt work always
this._platformLocation.onPopState = (e: LocationChangeListener) => {
console.log('PlatformLocation onpopstate');
location.href = url;
}
}
}