在 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.ts
和 rest.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,
以使設定無效。
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