在 AngularJS 中建立一個簡單的表格

Oluwafisayo Oluwatayo 2022年4月20日
在 AngularJS 中建立一個簡單的表格

當我們在電子商務網站中建立網頁時,我們需要使用一個表格來呈現大量複雜的資訊,例如產品列表及其價格、員工列表、工資、就業日期等。

表格幫助我們以結構良好且易於理解的方式呈現這些資料。它還使我們能夠更好地管理我們網站的螢幕空間。

因此,我們將使用 *ngFor 函式建立一個簡單的表,然後將其傳遞給資料庫。我們將使用 JSON Server Rest API

首先,我們將使用 VS Code 編輯器,它允許我們使用其中的終端來安裝依賴項。然後,我們開啟終端並輸入 npm install -g json-server 並將 json server 安裝到我們的系統中。

下一步是建立一個新專案。

建立專案後,我們開啟專案資料夾並新增一個名為 db.json 的新檔案。這是我們儲存 REST API 將訪問的資料的地方。

現在我們導航到 db.json 資料夾並輸入我們想要在表上擁有的資料。

{
    "Users": [
      {
        "id": 1,
        "firstName": "Nitin",
        "lastName": "Rana",
        "email": "nitin.rana@gmail.com",
        "mobile": "2345678901",
        "salary": "25000"
      },
      {
        "id": 2,
        "firstName": "Rajat",
        "lastName": "Singh",
        "email": "rajat.singh1@gmail.com",
        "mobile": "5637189302",
        "salary": "30000"
      },
      {
        "id": 3,
        "firstName": "Rahul",
        "lastName": "Singh",
        "email": "rahul.singh1@gmail.com",
        "mobile": "5557189302",
        "salary": "40000"
      },
      {
        "id": 4,
        "firstName": "Akhil",
        "lastName": "Verma",
        "email": "akhil.verma2@gmail.com",
        "mobile": "5690889302",
        "salary": "20000"
      },
      {
        "id": 5,
        "firstName": "Mohan",
        "lastName": "Ram",
        "email": "mohan.ram1@gmail.com",
        "mobile": "7637189302",
        "salary": "60000"
      },
      {
        "id": 6,
        "firstName": "Sohan",
        "lastName": "Rana",
        "email": "sohan.rana@gmail.com",
        "mobile": "3425167890",
        "salary": "25000"
      },
      {
        "id": 7,
        "firstName": "Rajjev",
        "lastName": "Singh",
        "email": "rajeev.singh1@gmail.com",
        "mobile": "5637189302",
        "salary": "30000"
      },
      {
        "id": 8,
        "firstName": "Mukul",
        "lastName": "Singh",
        "email": "mukul.singh1@gmail.com",
        "mobile": "5557189302",
        "salary": "40000"
      },
      {
        "id": 9,
        "firstName": "Vivek",
        "lastName": "Verma",
        "email": "vivek.verma2@gmail.com",
        "mobile": "5690889302",
        "salary": "20000"
      },
      {
        "id": 10,
        "firstName": "Shubham",
        "lastName": "Singh",
        "email": "shubham.singh@gmail.com",
        "mobile": "7637189502",
        "salary": "60000"
      }
    ]
  }

接下來要做的是導航 app.component.html 以使用 *ngFor 函式建立表。但在此之前,我們必須建立一個 Rest service,它將訪問 db.json 中的資料。

然後我們前往航站樓。在專案資料夾中,我們輸入 ng generate service Rest

安裝後,在 scr/app 資料夾中建立兩個檔案,rest.service.spec.tsrest.service.ts。我們現在需要導航到 rest.service.ts 進行一些編碼:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Users } from './Users';

@Injectable({
  providedIn: 'root'
})
export class RestService {

  constructor(private http : HttpClient) { }

  url : string  = "http://localhost:3000/Users";

  getUsers()
  {
    return this.http.get<Users[]>(this.url);
  }
  

}

此服務有助於監視資料庫將要傳遞的所需 url 中的活動。

然後我們前往 app.component.html 使用 *ngFor 函式建立表:

<h1>Table using JSON Server API</h1>
<hr>


<table id="users">

  <tr>
    <th *ngFor="let col of columns">
      {{col}}
    </th>
  </tr>
  <tr *ngFor="let user of users">
    <td *ngFor="let col of index">
      {{user[col]}}
    </td>
  </tr>

</table>

我們需要做的下一件事是前往 app.module.ts 進行更多編碼。在這裡,我們將 HttpClientModule 新增到匯入陣列中。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

為了使 db.json 中的表格日期可以被 HttpClient 讀取,我們必須將其設為字串屬性。因此,我們建立了一個 Users.ts 檔案,並輸入以下程式碼:

export class Users
{
    id : string;
    firstName : string;
    lastName : string;
    email : string;
    mobile : string;
    salary : string;

    constructor(id, firstName, lastName, email, mobile, salary)
    {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.mobile = mobile;
        this.salary = salary;
    }

}

此時唯一要做的就是使用一些 CSS 樣式美化表格:

h1
{
    text-align: center;
    color: #4CAF50;
}


#users {
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    border-collapse: collapse;
    width: 100%;
  }
  
  #users td, #users th {
    border: 1px solid #ddd;
    padding: 8px;
  }
  
  #users tr:nth-child(even){background-color: #f2f2f2;}
  
  #users tr:hover {background-color: #ddd;}
  
  #users th {
    padding-top: 12px;
    padding-bottom: 12px;
    text-align: left;
    background-color: #4CAF50;
    color: white;
  }

現在一切都應該可以正常工作了,但是我們可能會遇到一個錯誤,例如 Parameter mobile 隱含地具有 any 型別。

我們需要導航到 ts.config.json 檔案並將 noImplicitAny: false 新增到列表中。然後我們還將 \\ 新增到 noImplicitOverride: true, 以使設定無效。

Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn

相關文章 - Angular Table