从菜单组件进行角度路由以更改主组件内容显示

问题描述 投票:0回答:1

我有一个角度项目设置如下:

app.component.html

    <body>
  <app-top-header></app-top-header>
  <div class="wrapper">
    <aside>
      <app-main-menu></app-main-menu>
    </aside>
    <main>
      <div class="wrapper_inner">
        <router-outlet></router-outlet>
       </div>
     </main>
   </div>
  </body>

app.component.ts

import { Component } from '@angular/core';
import { Router, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
import { MainMenuComponent } from './navigation/main-menu/main-menu.component';
import { TopHeaderComponent } from './top-header/top-header.component';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [MainMenuComponent, TopHeaderComponent, RouterOutlet, RouterLink, RouterLinkActive],
  templateUrl: './app.component.html',
  styleUrl: './app.component.scss'
})
export class AppComponent {
  title = 'app';
  constructor(private router: Router) { }
  
  ngOnInit() {
   // this.router.navigate(['splash-component']); // Navigate to the default route
  }

}

app-main-menu 是一个单独的组件,它有一个 li-a 链接列表,我希望单击菜单来更改 app.component 页面上的路由器出口内容。

MainMenuComponent html (extract)
    
     <li><a href="#">Inventory</a>
            <ul class="submenu">
             <li><a routerLink="/inventory-component"
 routerLinkActive="active">Inventory</a></li>
            </ul>
        </li>

在app.routes.ts中设置路由

import { Routes } from '@angular/router';
import { SplashComponent } from './views/splash/splash.component';
import { InventoryComponent } from './views/inventory/inventory.component';

export const routes: Routes = [
    // Content Components
    { path: 'splash-component', component: SplashComponent },
    { path: 'inventory-component', component: InventoryComponent }
];

目前没有任何反应,但如果我将链接放在 app.component.html 上,路线就可以工作。我怎样才能从菜单中使用它?

angular
1个回答
0
投票

首先从应用程序 html 中删除 body 标签。它们应该只出现在index.html中

<app-top-header></app-top-header>
  <div class="wrapper">
    <aside>
      <app-main-menu></app-main-menu>
    </aside>
    <main>
      <div class="wrapper_inner">
        <router-outlet></router-outlet>
       </div>
     </main>
   </div>

然后确保您的index.html具有基本href标签。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Tour of Heroes</title>
  <base href="/"> <!-- should contain this -->

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.