Как получить URL-адрес непосредственного родительского маршрута, когда мы находимся на дочернем маршруте в angular?

avatar
Shrikanth PS
8 августа 2021 в 20:43
181
2
0

У меня есть следующие маршруты:

export const appRoutes: Routes = [
  {
    path: '',
    data: { breadcrumb: 'Parent' , rootRoute : true },
    children: [
      {
        path:'', component: ComponentA,
        pathMatch: 'full',
      },
      {
        path:'details/:id', component: ComponentDetails,
        pathMatch: 'full',
        data: { breadcrumb: 'Details Page' , rootRoute : false },
      },
    ]
  }
];

Когда я углубляюсь во вложенные дочерние маршруты и, скажем, я хочу вернуться к своему родителю, используя пользовательскую кнопку «Назад» в своем приложении, для которой мне нужно определить родительский маршрут (а не предыдущий маршрут), когда я нахожусь на детском маршруте. Как этого добиться?

Что я пробовал?

Angular 2 получает родительский активированный маршрут

Угловая версия: 12.x

Источник

Ответы (2)

avatar
Shrikanth PS
10 августа 2021 в 07:43
0

Полный маршрут, предложенный @vsnikhilvs.

this.currentRouteString = this.route && this.route['_routerState'] && this.route['_routerState']['snapshot'] && this.route['_routerState']['snapshot']?.url;

Ниже приведен путь к дочернему элементу, здесь "детали":

this.currentRoutePath = this.route?.url['_value'] && Array.isArray(this.route?.url['_value']) && this.route?.url['_value'].length>0 && this.route?.url['_value'][0]?.path;

Плевать это, как показано ниже, работает:

this.currentRouteString.split(this.currentRoutePath)[0]

avatar
vsnikhilvs
9 августа 2021 в 02:24
0

В выводе activeroute есть ключ с именем _routerstate.

Вы можете проверить _routerstate -> моментальный снимок -> url<458957205224845>.<45898>.

Это полный URL. Вы можете разделить эту строку и получить первую строку в качестве родительского маршрута.

Shrikanth PS
9 августа 2021 в 15:46
0

Да, я сталкивался с этим, но нет ли способа получить родительский маршрут без этого взлома? Причина в том, что родительский маршрут: app/component/A child: app/component/A/details/1, где, скажем, 1 — это идентификатор компонента. Теперь эта логика маршрута будет общей. поэтому он должен иметь возможность определить родительский маршрут в любом случае. что может быть рискованно, если я реализую логику как таковую, поэтому я хотел найти способ получить саму родительскую логику

vsnikhilvs
10 августа 2021 в 03:45
0

Наткнулся на это. Пожалуйста, проверьте, можете ли вы найти что-нибудь здесь. coderhelper.com/questions/46722761/…