Angular实现二级导航栏

本文实例为大家分享了Angular实现二级导航栏的具体代码,供大家参考,具体内容如下

1、将菜单放入数据库:

模拟放到该路径下:
src/assets/json/header.json

{
    "siteName": "PGG娱乐健身中心",
    "menu":[
      {
        "id":"1",
        "menuName":"首页",
        "menuChildren": [{}],
        "showSubMenu": false
      },
      {
        "id":"2",
        "menuName":"健身中心",
        "menuChildren": [
          {
            "itemId": "1",
            "menuChidrenItem": "居室器械健身"
          },
          {
            "itemId": "2",
            "menuChidrenItem": "野外运动"
          },
          {
            "itemId": "3",
            "menuChidrenItem": "健身小知识"
          }
        ],
        "showSubMenu": false
      },
      {
        "id":"3",
        "menuName":"休闲娱乐",
        "menuChildren": [
          {
            "itemId": "1",
            "menuChidrenItem": "养生钓鱼"
          },
          {
            "itemId": "2",
            "menuChidrenItem": "野炊烧烤"
          },
          {
            "itemId": "3",
            "menuChidrenItem": "真人野战"
          }
        ],
        "showSubMenu": false
      },
      {
        "id":"4",
        "menuName":"订单中心",
        "menuChildren": [
          {
          "itemId": "1",
          "menuChidrenItem": "所有订单"
        },
          {
            "itemId": "2",
            "menuChidrenItem": "已完成订单"
          },
          {
            "itemId": "3",
            "menuChidrenItem": "未完成订单"
          }
        ],
        "showSubMenu": false
      },
      {
        "id":"5",
        "menuName":"个人中心",
        "menuChildren": [
          {
            "itemId": "1",
            "menuChidrenItem": "用户信息修改"
          }
        ],
        "showSubMenu": false
      }
    ]
}

ts接受数据,并处理:

import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpClientModule } from '@angular/common/http';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {

  headData: any;
  constructor(
    private http: HttpClient
  ) { }

  ngOnInit(): void {
    // http://localhost:4200/assets/json/header.json 可访问
    this.http.get('/assets/json/header.json').subscribe(data => {
      this.headData = data;
      console.log(this.headData.menu);
    });
  }
  showSubMenu(item: any, index: any): void {
    // 设置当前子菜单显示
    item.showSubMenu = true;
  }
  notShowSubMenu(item: any, index: any): void {
    // 设置当前子菜单不显示
    item.showSubMenu = false;
  }
}

html显示控制,利用ngstyle控制:

<div class="menu_container">
  <div id="top_title">{{headData.siteName}}</div>
  <div id="menu" *ngFor="let item of headData.menu, let i = index">
  <!-- 第一个参数为类名称,第二个参数为boolean值,如果为true就添加第一个参数的类-->
    <ul [ngClass]="{'sumMenu': item.showSubMenu}">
      <!--mouseleave mouseout供选则-->
      <li class="top_nav nav_1" (mouseenter)="showSubMenu(item ,i)" (mouseleave)="notShowSubMenu(item, i)">
        <span>{{item.menuName}}</span>
        <dl *ngFor="let child of item.menuChildren, let k = index"
            [ngStyle]="{'display': item.showSubMenu ? 'block':'none','margin-left': '-2.6rem'}">
          <dd>{{child.menuChidrenItem}}</dd>
        </dl>
      </li>
    </ul>
  </div>
</div>

实际效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Angular2 (RC5) 路由与导航详解

    之前总结过RC4的路由配置,Angular2升级RC5之后增加了NgModule和RouterModule等等很多组件,所以现在的路由配置方式也变化比较大. 1.<base href> 大多数带路由的应用都要在 index.html 的 <head>标签下顶部添加一个<base>元素. 2.配置路由器 app.routing.ts import { Routes, RouterModule } from '@angular/router'; const appRoute

  • angular实现导航菜单切换

    本文实例为大家分享了angular实现导航菜单切换的具体代码,供大家参考,具体内容如下 js部分: $scope.navArr=[{         task:{             title: "我的任务",             showAdd: true,             data:[                 {                     title:'我的设计院',                     id:1,            

  • Angular2 (RC4) 路由与导航详解

    基础知识 1.<base href> 大多数带路由的应用都要在 index.html 的 <head>标签下添加一个 <base>元素. 2.导入路由库 import { ROUTER_DIRECTIVES } from '@angular/router'; 3.配置 首选方案是用带"路由数组"的provideRouter工厂函数([provideRouter(routes)])来启动此应用. app.routes.ts import { provi

  • Angular2 之 路由与导航详细介绍

    导航是很简单的,只是不同页面之间的切换,路由是实现导航的一种. 一个url对应的一个页面,在angular2中是一个组件.定义一个规则. 基础知识 大多数带路由的应用都要在index.html的标签下先添加一个元素,来告诉路由器该如何合成导航用的URL. 路由是从@angular/router包中引入的. 路由都是需要进行配置的.而这个配置需要的也就是RouterModule模块. 一个路由配置 path中不能用斜线/开头. 这些路由的定义顺序是故意如此设计的. 路由器使用先匹配者优先的策略来匹

  • AngularJS+Bootstrap3多级导航菜单的实现代码

    将介绍如何用AngularJS构建一个强大的web前端系统.angularjs是由Google团队开发的一款非常优秀web前端框架.在当前如此多的web框架下,AngularJS能脱颖而出,从架构设计上就高人一等,双向数据绑定,依赖注入,指令,MVC,模板.Angular.js创新地把后台技术融入前端开发,扫去jQuery一度的光芒.用angularjs就像写后台代码,更规范,更结构化,更可控. 本文将介绍如何实现多限级导航菜单. 目录 1.静态多级菜单实现 2.动态多级菜单实现 1. 静态多级

  • Angular实现二级导航栏

    本文实例为大家分享了Angular实现二级导航栏的具体代码,供大家参考,具体内容如下 1.将菜单放入数据库: 模拟放到该路径下:src/assets/json/header.json {     "siteName": "PGG娱乐健身中心",     "menu":[       {         "id":"1",         "menuName":"首页"

  • vue实现二级导航栏效果

    本文实例为大家分享了vue实现二级导航栏效果展示的具体代码,供大家参考,具体内容如下 实现如下功能: 在.vue文件中,template中的内容如下: <template> <div id="app"> <nav class="sidebar"> <ul class="menu"> <li v-for="(navList,index) in navLists" :key=&

  • 修改layui的后台模板的左侧导航栏可以伸缩的方法

    原生的左侧导航栏代码: <div class="layui-side layui-bg-black"> <div class="layui-side-scroll"> <!-- 左侧导航区域(可配合layui已有的垂直导航) --> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="

  • react实现导航栏二级联动

    本文实例为大家分享了react实现导航栏二级联动的具体代码,供大家参考,具体内容如下 效果图 js代码 import { Component } from "react"; import './scroll.less'   class Scroll extends Component {     constructor(...args) {         super(...args)         this.state = {             list: [        

  • PHPCMS V9 添加二级导航的思路详解

    今天看了看phpcms 写到二级导航时发现点问题,查询导航栏的信息时返回的$r[arrchildid]与自己想象的不符,文档上说是返回子栏目id但是却有些不同. 开始的思路: <ul class="nav navbar-nav"> <li class="active"><a href="{siteurl($siteid)}">首页</a></li> {pc:content action=

  • ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案

    在有tabs的项目里,进入子层级时,底部导航还一直存在,本人是要让他只在首页几个界面存在,其他的隐藏,在这里用到了angularjs的指令,要完成这个步骤分为三步: 在标签ion-tabs中添加:ng-class="{'tabs-item-hide': $root.hideTabs}",源码如下 <ion-tabs class="tabs-icon-top" ng-class="{'tabs-item-hide': $root.hideTabs}&q

  • layui导航栏实现代码

    本文实例为大家分享了layui水平导航菜单的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>导航与面包屑</title> <link rel="stylesheet" href="layui/css/layui.css"> </head> <

  • JS实现黑色大气的二级导航菜单效果

    本文实例讲述了JS实现黑色大气的二级导航菜单效果.分享给大家供大家参考.具体如下: 这是一款自己做的不错的二级导航菜单,黑色风格,是根据仿淘宝支付宝菜单而做的,自我感觉还算行吧. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-black-style-2l-nav-menu-codes/ 具体代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

  • vue elementUI使用tabs与导航栏联动

    不使用tabs标签页时,点击导航菜单,router-view映射相应的组件即可显示页面.但我们想在点击导航栏时在tabs中映射相应的组件,这就需要使用tabs组件 在slider.vue中点击路由后,把当前选择的路由@select使用bus传出去 <el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" background-color=

  • 当vue路由变化时,改变导航栏的样式方法

    当我们需要做一个类似顶部 或 底部导航栏公共组件的时候,单击某个导航栏按钮,跳转到另一个组件, 并且改变导航栏按钮的样式,如果用<router-link to=""><router-link/> 跳转的时候,我们可以这样做, 改变router-link-active 的样式,它是路由path指向当前组件时系统自动生成的. 先看下效果: 贴上我的路由文件js export default new Router({ routes: [ { path: '/', co

随机推荐