У меня есть одна «страница» с компонентами ниже друг друга, как в моем app.component.html
(примечание: я использую angular материал для боковой навигации, если это имеет значение):
<mat-sidenav-container>
<mat-sidenav #sidenav role="navigation">
<app-sidenav (closeSidenav)="sidenav.close()"></app-sidenav>
</mat-sidenav>
<mat-sidenav-content>
<app-toolbar (sidenavToggle)="sidenav.toggle()"></app-toolbar>
<main>
<app-home></app-home>
<app-about></app-about>
<app-experience></app-experience>
</main>
</mat-sidenav-content>
</mat-sidenav-container>
Что я хочу сделать, так это то, что если пользователь наберет «mysite.com/about», он будет go перемещаться в раздел app-about
страницы без перезагрузки и делать то же самое с другим компоненты. Кроме того, если пользователь нажимает на привязку в sidenav, он должен перейти / прокрутить к этому разделу app-about
.
Если бы они были на разных страницах, это было бы легко, используя router-outlet
и просто установив вверх по таким маршрутам, как:
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'about', component: AboutMeComponent },
{ path: 'experience', component: ExperienceComponent },
];
и настройте его в sidenav как:
<a routerLink="/about">ABOUT</a>
Но я не могу заставить его работать должным образом, когда они все на одной странице. Я не хочу, чтобы пользователь вводил «#» перед разделом, как обычно он должен делать с href
.