CanDeactivate: nextState
Есть компонент.
Для компонента реализован и зарегистрирован гуард "CanDeactivate". В реализации которого имеется метод: canDeactivate(component: IComponentDeactivate, currentRoute: ActivatedRouteSnapshot, nextState?: RouterStateSnapshot): Observable<boolean> { В самом компоненте есть код навигации на следующую страницу: this.router.navigate(['../' + this.nextUrl], { relativeTo: this.route }); Код навигации отрабатывает корректно. Т.е. браузер переходит на указанный урл, корректно обновляет адресную строку, отрисовывает страницу, подгрузив для неё компонент. Метод 'canDeactivate' тоже вызывается. Однако, в его входных параметрах 'currentRoute' и 'nextState' содержится один и тот же адрес - адрес той страницы с которой происходит навигация. Я предполагал, что 'nextState' будет содержать адрес страницы НА которую производится навигация, а тут такая незадача. Есть ли какая-то возможность определить цель перехода внутри 'canDeactivate'? На этом строится часть логики. P.S.: Angular 7.3.6. |
Вопрос закрыт.
После перехода c 6-й на 7-ю версию Ангуляра, в интерфейсе 'CanDeactivate' изменилась сигнатура метода: canDeactivate( component: T, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Раньше 'currentState' не было и на его месте (третьим параметром) был 'nextState'. Зачем они вообще добавляют новые параметры в ЦЕНТР. Это ж очевидно вызовет сложнодиагностируемые проблемы с миграцией на следующую версию. |
Часовой пояс GMT +3, время: 06:19. |