angular
March 23, 2024
Как в Angular понять причину отмены перехода по ссылке?
Еще в Angular v14 было добавлено свойство code для события NavigationCancel. Оно содержит код, определяющий причину отмены перехода по навигации. По сути это обычный enum со следующим набором ключей:
Навигация не удалась, потому что guard вернул UrlTree для перенаправления
Навигация не удалась, потому что была переопределена новой ссылкой
Навигация не удалась, потому что один из resolver завершился без выдачи значения
Навигация не удалась, потому что guard вернул false.
Благодаря этому API когда навигация отменяется, мы можем определить причину отмены и выполнить различные действия по мере необходимости
import { NavigationCancel, NavigationCancellationCode, Router } from '@angular/router';
@Component(...)
export class MyComponent {
constructor(router: Router) {
router.events.subscribe(e => {
if(e instanceof NavigationCancel) {
if(NavigationCancellationCode.GuardRejected) {
// ...
}
}
})
}
}