Как получить 5 угловых отрезков маршрута от ActivatedRoute?

Я использую последнюю версию angular5. У меня есть следующие закодированные маршруты (обратите внимание, что фрукты и овощи НЕ являются параметрами:

/fruits/item
/veggies/basket

Обратите внимание, что fruit - это родительский маршрут, и у меня есть несколько дочерних маршрутов в массиве (item - только один из них). «овощи» также является родительским маршрутом. "корзина" - это один из "дочерних маршрутов" в массиве маршрута veggies.

Как я могу использовать «ActivatedRoute» и как получить доступ к первому «фруктовому» или «овощному» сегменту маршрута? Я хочу проверить это и выйти в консоль.

Предположим, что активированный маршрут уже введен в переменную "route".

Ищу что-то вроде этого псевдокода (если он правильный)

showRouteRoot() {
   console.info(this.route.getFirstSegmentNameInRoute()) 
// expected output is fruits OR veggies. 
// If this can't be done in one line of code, 
// multiple lines is an acceptable answer
}

Я пытался:

console.info(this.route.snapshot.url.split('/'));

Это создает проблемы.

console.info(this.route.url)

Это показывает мне некую анонимную тему

console.info(this.route.parent.url)

Это показывает мне BehaviorSubject

вы пробовали console.info(route.snapshot.url[0].path);?

GreyBeardedGeek 06.04.2018 04:51

Это не выводит из системы первую часть, а только конец пути URL.

Rolando 06.04.2018 05:25
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
7
2
14 060
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сделать это можно так:

let url = this.activatedRoute.snapshot.url.join().split(',')
console.info(url[0]); 

Если вы хотите получить родительский маршрут, посмотрите здесь.

я получаю разделение не является свойством this.activatedRoute.snapshot.url

Rolando 06.04.2018 05:28

он по-прежнему говорит, что свойство "split" не существует в urlsegment. Это угловой 5.

Rolando 06.04.2018 05:41

Так что там написано только «предмет» или «корзина». Здесь не сказано «фрукты» или «овощи». Как я определил маршруты, есть ли родительский маршрут (фрукты или овощи), и у меня есть массив «дочерних» маршрутов под ним.

Rolando 06.04.2018 05:45

Посмотрите на URL-адрес в моем ответе, чтобы получить родительский маршрут. Это должно вам помочь.

Amit Chigadani 06.04.2018 05:54
Ответ принят как подходящий

ActivatedRoute предоставил член pathFromRoot, который позволяет разработчикам получать полные активные маршруты от root, см. в документы.

В вашей ситуации вы можете использовать нижеприведенный блок кода для этого:

this.activatedRoute.pathFromRoot[1].url.subscribe(val => console.info(val[0].path));

Обратите внимание, что в настоящее время результат pathFromRoot содержит пустой маршрут (первый элемент ActivatedRoute[]), что означает путь ''.

Другие вопросы по теме