真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

今天小編給大家分享一下Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、工布江達(dá)網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、工布江達(dá)網(wǎng)絡(luò)營銷、工布江達(dá)企業(yè)策劃、工布江達(dá)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供工布江達(dá)建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

系統(tǒng)功能包括下面的內(nèi)容:

  • 歡迎頁面

  • 用戶列表

  • 用戶新增

  • 用戶修改

  • 用戶刪除

所有的 service 使用模擬的數(shù)據(jù)。

說干咱就干。

結(jié)合 ng-zorro

angular 比較流行的 ui 框架有:

  • Angular Material 官方指定 UI 框架

  • NG-ZORRO,又名 Ant Design of Angular 國內(nèi)比較流行的 UI 框架

Ant Design 相信做前端開發(fā)的人兒都比較熟悉了。所以這里我們結(jié)合 NG-ZORRO 這個(gè)框架來做。如果熟悉 Vue 或者 React 版本的 Ant Design,相信你可以無縫鏈接啊~

我們重新使用 angular-cli 生成一個(gè)項(xiàng)目 ng-zorro

添加 ng-zorro 是很簡單的事情:進(jìn)入 ng-zorro 根目錄,執(zhí)行 ng add ng-zorro-antd 即可。

當(dāng)然你也可以執(zhí)行 npm install ng-zorro-antd 添加,不推薦。

結(jié)合 ng-zorro 完成之后,我們運(yùn)行項(xiàng)目起來 npm run start,你會(huì)在 http://localhost:4200 的頁面看到下圖內(nèi)容。

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

Not Bad, Bro.

配置路由

我們改成 hash 路由,并添加用戶路由,腳手架都幫我們完事了,我們只要做點(diǎn)小修改。

思路:

  • 先添加頁面 user 用戶的列表頁面,使用 ng-zorrotable 組件

  • 用戶的新增和更改頁面可以共用同一個(gè)頁面,使用 ng-zorroform 組件

  • 頁面刪除功能直接使用彈窗提示,使用 ng-zorromodal 組件

  • ng-zorro 組件按需引入

  • 調(diào)整路由文件

按照思路,我們得在 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 進(jìn)行路由的嵌套:

// 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';

// 相關(guān)的路由
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 { }

更改菜單

使用腳手架生成的菜單與我們需要開發(fā)的功能不符合,我們來調(diào)整下。

// app.component.html


  
    
      
      
        
        

Ng-Zorro

           
                    
                           用戶列表                    
                                                                   
                                
       

菜單展示,如果我們需要做權(quán)限管理的話,是需要后端配合進(jìn)行傳值的,然后我們再把相關(guān)的權(quán)限菜單渲染到頁面

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

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

完成用戶列表

接下來完成用戶列表的骨架,因?yàn)槭褂昧?UI 框架,我么寫起來異常的方便:

獲取用戶列表

// user.component.html


  
    
      Name
      Position
      Action
    
  
  
    
    
      {{data.name}}
      {{data.position}}
      
        Delete
      
    
  

我們模擬了些數(shù)據(jù)在 assets 文件夾中 user.json:

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

編寫好服務(wù)之后,我們調(diào)用獲取用戶的數(shù)據(jù):

// 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)
      }
    })
  }

}

因?yàn)闆]有引入后端服務(wù),這里我們采用 localstorage 的方式記錄狀態(tài)。

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

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

新增用戶和編輯用戶

我們簡單建立個(gè)表單,里面含有的字段就兩個(gè),分別是 nameposition。這兩個(gè)功能是公用一個(gè)表單的~

我們在 html 中添加:

// user-info.component.html


  
    
      
    
  
  
    
      
    
  
  確認(rèn)

頁面長這樣子:

Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

然后就是邏輯的判斷,進(jìn)行添加或者是修改。如果是連接帶上 uuid 的標(biāo)識(shí),就表示是編輯,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')
    })
    // 是編輯狀態(tài),設(shè)置標(biāo)志符
    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() {
    // 如果不符合提交,則報(bào)錯(cuò)
    if(!this.validateForm.valid) {
      Object.values(this.validateForm.controls).forEach((control: any) => {
        if(control?.invalid) {
          control?.markAsDirty();
          control?.updateValueAndValidity({ onlySelf: true });
        }
      })
      return
    }

    // 獲取到表單的數(shù)據(jù)
    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))
    }
  }

}

我們先設(shè)定一個(gè)標(biāo)志符 isAdd,默認(rèn)是新建用戶;當(dāng) uuid 存在的時(shí)候,將其設(shè)置為 false 值,表示是編輯的狀態(tài),對內(nèi)容進(jìn)行表單的回填。提交表單的操作也是按照該標(biāo)志符進(jìn)行判斷。我們直接對 localStorage 的信息進(jìn)行變更,以保證同步列表信息。

刪除功能

我們引入模態(tài)對話框進(jìn)行詢問是否刪除。

// user.component.ts

// 刪除
delete(data: any) {
  this.modal.confirm({
    nzTitle: '你想刪除該用戶?',
    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怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)

我們找到刪除的數(shù)據(jù),將其剔除,重新緩存新的用戶數(shù)據(jù),并更新 table 的用戶列表數(shù)據(jù)。

以上就是“Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章標(biāo)題:Angular+NG-ZORRO怎么開發(fā)一個(gè)后臺(tái)系統(tǒng)
當(dāng)前路徑:http://weahome.cn/article/gisdsc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部