angular
March 23
Как в 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) { // ... } } }) } }