iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >Angular+NG-ZORRO怎么开发一个后台系统
  • 816
分享到

Angular+NG-ZORRO怎么开发一个后台系统

2024-04-02 19:04:59 816人浏览 独家记忆
摘要

今天小编给大家分享一下angular+NG-ZORRO怎么开发一个后台系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收

今天小编给大家分享一下angular+NG-ZORRO怎么开发一个后台系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Angular+NG-ZORRO怎么开发一个后台系统

系统功能包括下面的内容:

  • 欢迎页面

  • 用户列表

  • 用户新增

  • 用户修改

  • 用户删除

所有的 service 使用模拟的数据。

说干咱就干。

结合 ng-zorro

angular 比较流行的 ui 框架有:

  • Angular Material 官方指定 UI 框架

  • NG-ZORRO,又名 Ant Design of Angular 国内比较流行的 UI 框架

Ant Design 相信做前端开发的人儿都比较熟悉了。所以这里我们结合 NG-ZORRO 这个框架来做。如果熟悉 Vue 或者 React 版本的 Ant Design,相信你可以无缝链接啊~

我们重新使用 angular-cli 生成一个项目 ng-zorro

添加 ng-zorro 是很简单的事情:进入 ng-zorro 根目录,执行 ng add ng-zorro-antd 即可。

当然你也可以执行 npm install ng-zorro-antd 添加,不推荐。

结合 ng-zorro 完成之后,我们运行项目起来 npm run start,你会在 Http://localhost:4200 的页面看到下图内容。

Angular+NG-ZORRO怎么开发一个后台系统

Not Bad, Bro.

配置路由

我们改成 hash 路由,并添加用户路由,脚手架都帮我们完事了,我们只要做点小修改。

思路:

  • 先添加页面 user 用户的列表页面,使用 ng-zorrotable 组件

  • 用户的新增和更改页面可以共用同一个页面,使用 ng-zorrofORM 组件

  • 页面删除功能直接使用弹窗提示,使用 ng-zorromodal 组件

  • ng-zorro 组件按需引入

  • 调整路由文件

按照思路,我们得在 ng-zorro 引入:

// app.module.ts

import { ReactiveFormsModule } from '@angular/forms';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzButtonModule } from 'ng-zorro-antd/button';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzInputModule } from 'ng-zorro-antd/input';


// ...

imports: [ // 是在 imports 中添加,而不是 declarations 中声明
  NzTableModule,
  NzModalModule,
  NzButtonModule,
  NzFormModule,
  ReactiveFormsModule,
  NzInputModule
],

简单易理解原则,我们这里不使用 children 进行路由的嵌套:

// app.routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
import { WelcomeComponent } from './pages/welcome/welcome.component';
import { UserComponent } from './pages/user/user.component';
import { UserInfoComponent } from './pages/user/user-info/user-info.component';

// 相关的路由
const routes: Routes = [
  { 
    path: '', 
    pathMatch: 'full', 
    redirectTo: '/welcome' 
  },
  {
    path: 'welcome',
    component: WelcomeComponent
  },
  {
    path: 'user',
    component: UserComponent
  },
  {
    path: 'user/add',
    component: UserInfoComponent
  },
  {
    path: 'user/edit/:uuid',
    component: UserInfoComponent
  }
];

@NgModule({
  imports: [RouterModule.forRoot(
    routes,
    {
      useHash: true,// 使用 hash 模式
      preloadingStrategy: PreloadAllModules
    }
  )],
  exports: [RouterModule]
})
export class AppRoutingModule { }

更改菜单

使用脚手架生成的菜单与我们需要开发的功能不符合,我们来调整下。

// app.component.html

<nz-layout class="app-layout">
  <nz-sider class="menu-sidebar"
            nzCollapsible
            nzWidth="256px"
            nzBreakpoint="md"
            [(nzCollapsed)]="isCollapsed"
            [nzTrigger]="null">
    <div class="sidebar-loGo">
      <!-- 默认点击 logo 跳转到首页 -->
      <a routerLink="/welcome">
        <img src="https://ng.ant.design/assets/img/logo.svg" alt="logo">
        <h2>Ng-Zorro</h2>
      </a>
    </div>
    <ul nz-menu nzTheme="dark" nzMode="inline" [nzInlineCollapsed]="isCollapsed">
      <li nz-submenu nzOpen nzTitle="用户管理" nzIcon="dashboard">
        <ul>
          <li nz-menu-item nzMatchRouter>
            <a routerLink="/user">用户列表</a>
          </li>
        </ul>
      </li>
    </ul>
  </nz-sider>
  <nz-layout>
    <nz-header>
      <div class="app-header">
        <span class="header-trigger" (click)="isCollapsed = !isCollapsed">
            <i class="trigger"
               nz-icon
               [nzType]="isCollapsed ? 'menu-unfold' : 'menu-fold'"
            ></i>
        </span>
      </div>
    </nz-header>
    <nz-content>
      <div class="inner-content">
        <router-outlet></router-outlet>
      </div>
    </nz-content>
  </nz-layout>
</nz-layout>

菜单展示,如果我们需要做权限管理的话,是需要后端配合进行传值的,然后我们再把相关的权限菜单渲染到页面

替换成上面的代码后,得到的基本骨架如下:

Angular+NG-ZORRO怎么开发一个后台系统

完成用户列表

接下来完成用户列表的骨架,因为使用了 UI 框架,我么写起来异常的方便:

获取用户列表

// user.component.html

<nz-table #basicTable [nzData]="list">
  <thead>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <!-- 对获取到的数据进行遍历 -->
    <tr *ngFor="let data of basicTable.data">
      <td>{{data.name}}</td>
      <td>{{data.position}}</td>
      <td>
        <a style="color: #f00;">Delete</a>
      </td>
    </tr>
  </tbody>
</nz-table>

我们模拟了些数据在 assets 文件夹中 user.JSON:

{
  "users": [
    {
      "uuid": 1,
      "name": "Jimmy",
      "position": "Frontend"
    },
    {
      "uuid": 2,
      "name": "Jim",
      "position": "Backend"
    }
  ],
  "environment": "development"
}

编写好服务之后,我们调用获取用户的数据:

// user.component.ts

import { Component, OnInit } from '@angular/core';
import { UserService } from 'src/app/services/user.service';

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

  public list: any = []

  constructor(
    private readonly userService: UserService
  ) { }

  ngOnInit(): void {
    if(localStorage.getItem('users')) {
      let obj = localStorage.getItem('users') || '{}'
      this.list =  jsON.parse(obj)
    } else {
      this.getList()
    }
  }

  // 获取用户列表
  getList() {
    this.userService.getUserList().subscribe({
      next: (data: any) => {
        localStorage.setItem('users', JSON.stringify(data.users))
        this.list = data.users
      },
      error: (error: any) => {
        console.log(error)
      }
    })
  }

}

因为没有引入后端服务,这里我们采用 localstorage 的方式记录状态。

上面完成后,我们得到列表信息如下:

Angular+NG-ZORRO怎么开发一个后台系统

新增用户和编辑用户

我们简单建立个表单,里面含有的字段就两个,分别是 nameposition。这两个功能是公用一个表单的~

我们在 html 中添加:

// user-info.component.html

<form nz-form [formGroup]="validateForm" class="login-form" (ngSubmit)="submitForm()">
  <nz-form-item>
    <nz-form-control nzErrorTip="请输入用户名!">
      <input type="text" nz-input formControlName="username" placeholder="请输入用户名" style="width: 160px;" />
    </nz-form-control>
  </nz-form-item>
  <nz-form-item>
    <nz-form-control nzErrorTip="请输入职位!">
      <input type="text" nz-input formControlName="position" placeholder="请输入职位" style="width: 160px;"/>
    </nz-form-control>
  </nz-form-item>
  <button nz-button class="login-form-button login-form-margin" [nzType]="'primary'">确认</button>
</form>

页面长这样子:

Angular+NG-ZORRO怎么开发一个后台系统

然后就是逻辑的判断,进行添加或者是修改。如果是连接带上 uuid 的标识,就表示是编辑,show you the codes

// user-info.component.ts

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ActivatedRoute, ParamMap } from '@angular/router';

@Component({
  selector: 'app-user-info',
  templateUrl: './user-info.component.html',
  styleUrls: ['./user-info.component.scss']
})
export class UserInfoComponent implements OnInit {

  public isAdd: boolean = true;
  public userInfo: any = []
  public uuid: number = 0;

  validateForm!: FormGroup;

  constructor(
    private fb: FormBuilder,
    private route: ActivatedRoute,
  ) { }

  ngOnInit(): void {
    this.userInfo = JSON.parse(localStorage.getItem('users') || '[]')
    this.route.paramMap.subscribe((params: ParamMap)=>{
      this.uuid = parseInt(params.get('uuid') || '0')
    })
    // 是编辑状态,设置标志符
    if(this.uuid) {
      this.isAdd = false
    }
    
    if(this.isAdd) {
      this.validateForm = this.fb.group({
        username: [null, [Validators.required]],
        position: [null, [Validators.required]]
      });
    } else {
      let current = (this.userInfo.filter((item: any) => item.uuid === this.uuid))[0] || {}
      // 信息回填
      this.validateForm = this.fb.group({
        username: [current.name, [Validators.required]],
        position: [current.position, [Validators.required]]
      })
    }
    
  }

  submitForm() {
    // 如果不符合提交,则报错
    if(!this.validateForm.valid) {
      Object.values(this.validateForm.controls).forEach((control: any) => {
        if(control?.invalid) {
          control?.markAsDirty();
          control?.updateValueAndValidity({ onlySelf: true });
        }
      })
      return
    }

    // 获取到表单的数据
    const data = this.validateForm.value
    // 新增用户
    if(this.isAdd) {
      
      let lastOne = (this.userInfo.length > 0 ? this.userInfo[this.userInfo.length-1] : {});
      this.userInfo.push({
        uuid: (lastOne.uuid ? (lastOne.uuid + 1) : 1),
        name: data.username,
        position: data.position
      })
      localStorage.setItem('users', JSON.stringify(this.userInfo))
    } else { // 编辑用户,更新信息
      let mapList = this.userInfo.map((item: any) => {
        if(item.uuid === this.uuid) {
          return {
            uuid: this.uuid,
            name: data.username,
            position: data.position
          }
        }
        return item
      })
      localStorage.setItem('users', JSON.stringify(mapList))
    }
  }

}

我们先设定一个标志符 isAdd,默认是新建用户;当 uuid 存在的时候,将其设置为 false 值,表示是编辑的状态,对内容进行表单的回填。提交表单的操作也是按照该标志符进行判断。我们直接对 localStorage 的信息进行变更,以保证同步列表信息。

删除功能

我们引入模态对话框进行询问是否删除。

// user.component.ts

// 删除
delete(data: any) {
  this.modal.confirm({
    nzTitle: '<i>你想删除该用户?</i>',
    nzOnOk: () => {
      let users = JSON.parse(localStorage.getItem('users') || '[]');
      let filterList = users.filter((item: any) => item.uuid !== data.uuid);
      localStorage.setItem('users', JSON.stringify(filterList));
      this.list = filterList
    }
  });
}

Angular+NG-ZORRO怎么开发一个后台系统

我们找到删除的数据,将其剔除,重新缓存新的用户数据,并更新 table 的用户列表数据。

以上就是“Angular+NG-ZORRO怎么开发一个后台系统”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网html频道。

--结束END--

本文标题: Angular+NG-ZORRO怎么开发一个后台系统

本文链接: https://www.lsjlt.com/news/97521.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Angular+NG-ZORRO怎么开发一个后台系统
    今天小编给大家分享一下Angular+NG-ZORRO怎么开发一个后台系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • 怎么用Java开发用户后台管理系统
    今天小编给大家分享一下怎么用Java开发用户后台管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。主要功能管理员登录功能...
    99+
    2023-06-26
  • 如何使用MongoDB开发一个简单的网站后台管理系统
    如何使用MongoDB开发一个简单的网站后台管理系统随着互联网的发展,网站的使用和管理变得越来越重要。为了方便网站的管理者对网站内容进行后台管理,开发一个简单而高效的网站后台管理系统是必不可少的。本文将介绍如何使用MongoDB来开发一个简...
    99+
    2023-10-22
    MongoDB 管理系统 网站后台
  • Vue后台管理系统开发的示例分析
    这篇文章给大家分享的是有关Vue后台管理系统开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在后台管理系统的日常开发过程中发现对于同一个业务下面的版块不同的开发同事每...
    99+
    2024-04-02
  • 怎么用Android开发一个学生管理系统
    本篇内容介绍了“怎么用Android开发一个学生管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果演示随手做的一个小玩意,还有很多功...
    99+
    2023-06-25
  • 适合后台管理系统开发的12个前端框架(小结)
    目录1、D2admin 2、vue-element-admin 3、JEECG-BOOT 4、GIN-VUE-ADMIN 5、vue-admin-beautiful 6.Dcat-a...
    99+
    2024-04-02
  • 一次性打包送你12 个好看的开源后台管理系统
    1. D2admin开源地址:https://github.com/d2-projects/d2-admin文档地址:https://d2.pub/zh/doc/d2-admin/效果预览:https://d2.pub/d2-admin/p...
    99+
    2023-07-25
  • vue开发中后台系统复杂表单优化技巧
    目录引言表单校验使用computed进行表单校验优化表单拆分表单兄弟组件的数据通信问题引言 在中后台系统的日常开发中,表单必不可少,当表单内容比较多,例如有上百个字段(这一点都不夸张...
    99+
    2024-04-02
  • 双系统怎么设置开机开启一个系统?win10/win8双系统设置开机只开启一个系统的设置方法
    微软发布win10系统一段时间了,一些用户想要升级,但是又不想放弃原来的win8系统,怎么办呢?这时候我们可以在电脑中安装双系统。但是有时候只需要开启一个系统,那么该怎么设置呢?下面小编给大家讲解win10/win8双系...
    99+
    2023-05-21
    win10系统 win8系统 双系统 开机
  • Angular中怎么封装一个并发布组件
    本篇文章为大家展示了Angular中怎么封装一个并发布组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、封装组件目录结构:(部分目录不是框架中自动生成,二是后期...
    99+
    2024-04-02
  • vue开发中后台系统复杂表单优化技巧是什么
    这篇文章主要讲解了“vue开发中后台系统复杂表单优化技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue开发中后台系统复杂表单优化技巧是什么”吧!表单校验<template&...
    99+
    2023-07-02
  • 怎么在钉钉开发一个固定资产管理系统
    首先,要选择合适的开发工具。钉钉提供了多种开发工具,包括JIRA、EaseUS、Teambition等,根据自己的需求选择适合的开发工具,可以大大提高开发效率和质量。 其次,需要选择合适的数据库类型。钉钉的数据库类型包括SQLAlchem...
    99+
    2023-10-28
    固定资产管理 系统
  • asp后台管理系统怎么实现
    ASP后台管理系统可以通过以下步骤实现:1. 确定需求:根据管理系统的功能和用户需求,确定系统的所有功能模块和页面。2. 设计数据库...
    99+
    2023-05-30
    asp后台管理系统 asp
  • 如何使用Go语言和Redis开发电商后台系统
    如何使用Go语言和Redis开发电商后台系统引言:随着电商行业的繁荣发展,电商后台系统成为了保障电商平台正常运营的重要组成部分。而使用Go语言和Redis来开发电商后台系统,则可以提供高效、稳定和可扩展的解决方案。本文将介绍如何使用Go语言...
    99+
    2023-10-28
    Go语言 redis 电商后台系统
  • 开发一个信息管理系统构建高效的数据管理平台
    信息管理系统是一种组织、管理和维护信息的有效工具,对于提升工作效率、提高信息利用率和保护数据安全具有重要意义。本文将详细介绍如何开发一个信息管理系统,包括系统设计、功能开发和数据维护等内容。 一、系统设计开发信息管理系统的第一步是进行系统设...
    99+
    2023-11-20
    高效 管理平台 信息管理系统
  • 培训系统的开发一个全面指南
    培训系统的开发 #本文将详细介绍如何开发和设计一个功能强大的培训系统,包括需求分析、系统架构设计、功能模块开发、测试和维护等方面的内容。细节说明:需求分析:首先需要明确系统的目标和用户需求。这可以通过问卷调查、用户访谈等方式进行。然后,根据...
    99+
    2024-01-24
    指南 系统
  • Vue考试系统的后台管理功能开发示例解读
    考试系统后台管理项目介绍: 技术选型:Vue2.0+Elemenu-ui 项目功能介绍: 账户信息模块:菜单权限、角色权限设置、角色权限分配、账号设置、公司分组考试管理模块:新增/编...
    99+
    2024-04-02
  • PHP实战:开发一个网络图书馆系统
    PHP实战:开发一个网络图书馆系统随着科技的发展和人们生活水平的提高,网络图书馆系统的发展也变得越来越重要。一个网络图书馆系统可以让用户方便地访问和借阅书籍,同时也方便管理员管理图书的流通和归还。PHP作为一种常用的服务器端脚本语言,为开发...
    99+
    2023-10-27
    PHP开发 实战 网络图书馆
  • windows双系统怎么删除一个系统
    这篇文章主要介绍“windows双系统怎么删除一个系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows双系统怎么删除一个系统”文章能帮助大家解决问题。双系统删除一个的方法:按下“win+...
    99+
    2023-07-01
  • Linux操作系统的后台任务怎么看
    本篇内容介绍了“Linux操作系统的后台任务怎么看”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux作为一个多任务环境,允许用户同时执...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作