Как я могу получить доступ к следующей информации о маршруте внутри гвардия «canDeactivate» в angular2 нового маршрутизатораДоступ к информации следующего маршрута внутри canDeactivate охранника в новом angular2 маршрутизатора
5
A
ответ
0
Я застрял на этом точно такую же проблеме. В моем случае моя логика canDeactivate будет отменять/перенаправлять следующий маршрут условно. На данный момент, мы надеемся, есть лучший способ, я использую следующее решение
- Из моего компонента, зацепить в
Router
событий (в частностиRoutesRecognized
) для записи маршрута для дальнейшего использования. - Внесите
canDeactivate
и используйте сохраненные данные маршрута, чтобы вернуть true или false.
ngOnInit(): void {
\t this.tabbedSearch = this.profilesService.currentProfile.tabbedSearch;
\t this.router.events
\t \t .filter(e => e instanceof RoutesRecognized)
\t \t .map(e => <RoutesRecognized> e)
\t \t .subscribe((e) => {
\t \t \t this.lastRoute = e.state.root.firstChild.routeConfig.path;
\t \t \t this.lastParams = e.state.root.firstChild.params;
\t \t });
}
public canDeactivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
\t // do not navigate away if we are doing tabbed search AND the new route is the article details view
\t if (this.tabbedSearch && this.lastRoute == "article/details/:type/:id/:version") {
\t \t this.tabbedDetails.push(Object.create(this.lastParams));
\t \t return false;
\t }
\t else {
\t \t return true;
\t }
}
(Примечание: не запустить фрагмент кода, но по какой-то причине Пример кода форматирования не отображается правильно.)
Я действительно, действительно не нравится это, но не нашли другого пути.