首页 > 其他分享 >根据路线在 Angular 中动态突出显示活动菜单项

根据路线在 Angular 中动态突出显示活动菜单项

时间:2024-07-26 13:28:08浏览次数:8  
标签:color RouterModule component 路线 link import 菜单项 path Angular

要在 Angular 应用程序中根据当前路由动态突出显示活动菜单项,您可以使用 Angular 的内置 Router 模块。这允许您将类应用于活动链接。

以下是具体操作方法。

步骤 1.导入 RouterModule

确保已在 Angular 模块(通常是 app.module.ts)中配置了 RouterModule。

import { RouterModule } from '@angular/router';
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

第 2 步:更新 HTML

使用 routerLinkActive 指令动态地将类应用于活动菜单项。以下是更新导航 HTML 的方法。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Navbar Example</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <style>
    .navbar-nav .nav-item a {
      color: black;
      text-decoration: none;
    }
    .navbar-nav .nav-item a:hover {
      color: #0056b3; /* Optional: Change color on hover */
    }
    .navbar-nav .home-link i {
      color: blue;
    }
    .active-link {
      color: blue !important; /* Customize the active link color */
    }
  </style>
</head>
<body>

<section class="wrapper megamenu-wraper">
  <div class="">
    <nav class="container navbar navbar-expand-lg main-menu">
      <div class="">
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item">
              <a routerLink="/private/po" routerLinkActive="active-link" class="home-link active">
                <i class="fa fa-home"></i>
              </a>
            </li>
            <li class="nav-item">
              <a routerLink="dashboard" routerLinkActive="active-link">Dashboard</a>
            </li>
            <li class="nav-item">
              <a routerLink="default" routerLinkActive="active-link">Student List</a>
            </li>
            <li class="nav-item">
              <a routerLink="camps" routerLinkActive="active-link">Activities</a>
            </li>
            <li class="nav-item">
              <a routerLink="camp-attendence" routerLinkActive="active-link">Attendance</a>
            </li>
            <li class="nav-item">
              <a [routerLink]="['/private/po/actvity-camp', 0]" routerLinkActive="active-link">Create Activity</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </div>
</section>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>
解释
  • routerLinkActive 指令:此指令将指定的类(在本例中为 active-link)应用于与当前路由匹配的链接。
  • routerLink 指令:将链接绑定到路由器路径。
  • CSS: active-link 类的样式用来指示活动状态。

步骤 3. 确保路由器模块配置

确保您的 Angular 路由器在您的应用程序模块(通常是 app-routing.module.ts)中正确配置。

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { DashboardComponent } from './dashboard/dashboard.component';
import { StudentListComponent } from './student-list/student-list.component';
import { ActivitiesComponent } from './activities/activities.component';
import { AttendanceComponent } from './attendance/attendance.component';
import { CreateActivityComponent } from './create-activity/create-activity.component';
const routes: Routes = [
  { path: 'dashboard', component: DashboardComponent },
  { path: 'default', component: StudentListComponent },
  { path: 'camps', component: ActivitiesComponent },
  { path: 'camp-attendence', component: AttendanceComponent },
  { path: 'private/po/actvity-camp/:id', component: CreateActivityComponent },
  { path: '**', redirectTo: 'dashboard', pathMatch: 'full' }
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

此设置可确保当您浏览应用程序时,活动链接将突出显示,从而提供更好的用户体验。

4.结果

标签:color,RouterModule,component,路线,link,import,菜单项,path,Angular
From: https://blog.csdn.net/xiefeng240601/article/details/140680447

相关文章

  • 如何在 AngularJS 中使用 Chart.js?
    Chart.js是一个灵活且功能强大的JavaScript库,可轻松创建各种类型的图表。在本指南中,我们将逐步介绍如何将Chart.js与AngularJS集成,并使用示例财务数据创建不同类型的图表。一.先决条件在我们开始之前,请确保您已准备好以下内容。已安装Node.js您的项目中包含Angu......
  • Angular 18.2.0 的新功能增强和创新
    一.Angular增强功能Angular是一个以支持开发强大的Web应用程序而闻名的平台,最近发布了18.2.0版本。此更新带来了许多新功能和改进,进一步增强了其功能和开发人员体验。在本文中,我们将深入探讨Angular18.2.0为开发人员社区提供的一些最值得注意的新增功能和更新。1......
  • MySQL配置开发文章:学习路线、使用案例及代码示例
    引言MySQL是一个广泛使用的开源关系型数据库管理系统,由于其性能高、成本低、可靠性强,成为了许多开发者的首选工具,本文将介绍MySQL的基本配置、学习路线、使用案例及代码示例,帮助你更好地掌握MySQL的使用MySQL配置开发教程学习路线基础知识:了解关系型数据库的基本概念,熟......
  • 测开学习路线笔记
    Pytest源码包含了很多插件入口点(调用插件)如何搭建一个测试平台Django在线编辑Excel、yaml文件Pytest读取执行,生成测试报告、日志记录Django展示结果和测试报告如何开发一个Pytest插件HOOK:约定查看源码hookspec.py查看文档HOOK规则:被动调用(被pytest自......
  • 网络安全(黑客)详细自学路线 一一2024新版
    前言当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。一、网络安全的基本概念网络安全是一种保护:它涉及保护我们的设备和信息,从各种威胁,如病毒和蠕虫,到更复杂的形......
  • 网络安全(黑客)详细自学路线 一一2024新版
    前言当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。一、网络安全的基本概念网络安全是一种保护:它涉及保护我们的设备和信息,从各种威胁,如病毒和蠕虫,到更复杂的形......
  • 网络安全(黑客)详细自学路线 一一2024新版
    前言当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。一、网络安全的基本概念网络安全是一种保护:它涉及保护我们的设备和信息,从各种威胁,如病毒和蠕虫,到更复杂的形......
  • 网络安全(黑客)详细自学路线 一一2024新版
    前言当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。一、网络安全的基本概念网络安全是一种保护:它涉及保护我们的设备和信息,从各种威胁,如病毒和蠕虫,到更复杂的形......
  • 2024网络安全学习路线,最全保姆级教程,学完直接拿捏!
    关键词: 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题前排提示:文末有CSDN独家网络安全资料包!1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学......
  • 2024网络安全学习路线,最全保姆级教程,学完直接拿捏!
    关键词: 网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题前排提示:文末有CSDN独家网络安全资料包!1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学......