Angular 2 - Якорные ссылки на элемент на текущей странице

Если название вопроса неясно, у меня есть веб-страница с некоторым разделом "ссылки", после чего кто-то может щелкнуть ссылку и перейти к элементу в том же шаблоне. Это не обязательно означает изменение URL.

Суть того, что я пробовал:

<a href="#sectionA>Section A</a>
<a href="#sectionB>Section B</a>
<a href="#sectionC>Section C</a>
<br/>
<div id="sectionA">
   <p> Content for A </p>
</div>
<div id="sectionB">
   <p> Content for B </p>
</div>
<div id="sectionC">
   <p> Content for C </p>
</div>

Этот подход не работал, потому что нажатие на ссылку привело бы меня к baseUrl/#sectionA (несуществующий маршрут), а не к маршруту компонента, частью которого была страница (baseUrl/currentPage#sectionA).

Первый подход не удался, я попробовал следующее:

<a href="currentPage#sectionA>Section A</a>
<a href="currentPage#sectionB>Section B</a>
<a href="currentPage#sectionC>Section C</a>

Это на самом деле работает для текущей страницы, прокручивая пользователя до раздела на currentPage; проблема возникает, когда у нас есть дочерний маршрут, использующий тот же компонент и шаблон. По сути, переход к baseUrl / currentPage переводит вас в пустую форму. Если бы пользователь перешел к, например, "baseUrl/currentPage/1", мы ожидаем, что форма будет заполнена данными для 1, который является идентификатором.

Я хотел бы, чтобы пользователь щелкнул привязку в этом боковом контекстном меню, чтобы перейти к разделу в шаблоне, используемом как currentPage, так и параметризованными маршрутами currentPage (currentPage/1, currentPage/31 и т. Д.). Что не важно, так это то, что в разделе шаблона есть ссылка в URL. Я только забочусь о том, чтобы аспект навигации был функциональным для родителя и его детей. Определенно предпочтительнее не использовать сторонние угловые плагины.

Все предложения и отзывы очень ценятся.

Изменить: Добавление маршрутов компонентов для контекста:

export const CurrentComponentRoutes: Route[] = [
  {
    path: 'currentPage',
    component: CurrentComponent
  },
  {
    path: 'currentPage/:ID',
    component: CurrentComponent
  }
];

Вышеуказанные маршруты экспортируются в основную маршрутизацию app.component:

export const appRoutes: Routes = [
  ...CurrentComponentRoutes,
  ...OtherRoutes
];

export const routing: ModuleWithProviders = RouterModule.forRoot(approot);

Экспортная маршрутизация затем импортируется в основной app.module. Кроме того, я установил базовый href в файле index.html.

1 ответ

Похоже на ответ pe8ter, кажется, он также может быть активирован [routerLink]

пожалуйста, посмотрите, поможет ли это Angular2 Routing with Hashtag для привязки страницы

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