первый щелчок на 'CHILD' = URL-адрес изменяется на localhost: 4200 / child -> это> нормально, пока второй клик на 'GRANDCHILD', он пытается перейти на> localhost: 4200 / child /(внук)
Но в этом случае активированный маршрут равен child
(после перехода на localhost: 4200 / child), потому что активированный маршрут содержит информацию о маршруте, связанном с компонентом, загруженным в розетку(маршрут child
связан с ChildComponent
).Указание
routerLink="grandchild"
// Or
routerLink="./grandchild"
означает, что grandchild
должен быть добавлен к child
(активированный маршрут).Чтобы достичь желаемого, вам нужно указать что-то вроде этого:
// adding / means to go to app root path,
// and FeatureComponent has path: '',
// so it starts from root path
routerLink="/grandchild"
Или:
// adding ../ means go one level up (remove "child")
routerLink="../grandchild"
С абсолютным routerLink типа '/ child' это работает;
На верхнем уровне пути, начинающиеся с / ссылающиеся на корень приложения (из Angular Docs).Таким образом, он идет к корню приложения, которое также работает так, как вы хотите, потому что FeatureComponent
имеет путь: '', и не является дочерним элементом другого компонента с некоторым путем, поэтому он начинается с корня.
Но, насколько это понятно, маршрутизация также должна работать без косой черты, потому что маршрутизатор затем проверяет наличие дочерних элементов, основываясь на активированном маршруте
Angular Docs говорит, что маршрутизатор поддерживает синтаксис, похожий на каталогв списке параметров ссылки, чтобы помочь найти название маршрута.Так выглядит, какой путь использовать (относительный или абсолютный) и куда идти.Если используется аналогия с синтаксисом каталога, текущий каталог является активированным маршрутом (child
в данном случае после перехода к localhost:4200/child
):
routerLink = "grandchild" - (относительный путь) ищет внука в дочернем элементеи перейдите в child / grandchild
routerLink = "./ grandchild" - (относительный путь) такой же, как предыдущий
routerLink = "../ grandchild" - (относительный путь)каталог по сравнению с текущим каталогом
routerLink = "/ grandchild" - (абсолютный путь) ищите внука в корневом каталоге и переходите к / grandchild
Надеюсь, это поможет)