iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

Angular 學習雜記系列 第 14

Angular 學習雜記-Angular整合應用網站-員工資料管理系統(三)

  • 分享至 

  • xImage
  •  

接下面,就要建立最後的元件,來顯示出員工銷售排行榜。這也是子元件。之前有提到元件可大可小,大時就是一個網頁,小時就可以是一個子元件,專門來執行特定的功能,再組合起來,成為一個網頁。

先依之前的步驟,建立第三個元件,名稱為「employee-sales-list」,來顯示員工銷售排行榜。

在employee-sales-list.component.ts中,首先,將import資料類別及服務。直接用原來的getEmployees(),修改成先進行排序,再取銷售金額前二名的員工資料。程式碼如下:

import { Component, OnInit } from '@angular/core';

// 引用資料類
import { Employeeinfo } from './../employeeinfo';
// 載入Service
import { EmployeeserviceService } from './../employeeservice.service';

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

  employeelists: Employeeinfo[] = [];

  // 建構子
  constructor(private employeeService: EmployeeserviceService) {}

  // 初始化
  ngOnInit() {
    this.getEmployees();
  }

  getEmployees(): void {

    // 先排序,再取前二名員工資料
    // tslint:disable-next-line: only-arrow-functions
    this.employeelists = this.employeeService.getEmployee().sort(function(a, b) {
      return b.sales - a.sales;
    }).splice(0, 2);
  }
}

在employee-sales-list.component.html中,跟列表一樣,列出符合條件的員工資料,程式碼如下:

<h3>員工銷售排行榜</h3>
<div class="grid grid-pad">
  <a *ngFor="let employeeinfo of employeelists" class="col-1-4">
    <div class="module hero">
      <h4>{{employeeinfo.name}}</h4>
      <h4>{{employeeinfo.sales}}</h4>
    </div>
  </a>
</div>

在employee-sales-list.component.css中,也要設定css,來讓html顯示的,比較好顯示出來。

[class*='col-'] {
  float: left;
  padding-right: 20px;
  padding-bottom: 20px;
}
[class*='col-']:last-of-type {
  padding-right: 0;
}
a {
  text-decoration: none;
}
*, *:after, *:before {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
h3 {
  text-align: center;
  margin-bottom: 0;
}
h4 {
  position: relative;
}
.grid {
  margin: 0;
}
.col-1-4 {
  width: 25%;
}
.module {
  padding: 20px;
  text-align: center;
  color: #eee;
  max-height: 120px;
  min-width: 120px;
  background-color: #3f525c;
  border-radius: 2px;
}
.module:hover {
  background-color: #eee;
  cursor: pointer;
  color: #607d8b;
}
.grid-pad {
  padding: 10px 0;
}
.grid-pad > [class*='col-']:last-of-type {
  padding-right: 20px;
}
@media (max-width: 600px) {
  .module {
    font-size: 10px;
    max-height: 75px; }
}
@media (max-width: 1024px) {
  .grid {
    margin: 0;
  }
  .module {
    min-width: 60px;
  }
}

最後,在app.component.html網頁,要將原來顯示的區塊,更新成員工銷售排行榜即可。

<app-employee-sales-list></app-employee-sales-list>

<router-outlet></router-outlet>

網頁執行結果 ,不過,選取員工是沒有反應的。因為,後續,要配合Routing路由來組成切換網頁,及連結到明細資料:

https://ithelp.ithome.com.tw/upload/images/20190930/20000953EGAoY6FvM9.png


上一篇
Angular 學習雜記-Angular整合應用網站-員工資料管理系統(二)
下一篇
Angular 學習雜記-Angular整合應用網站-員工資料管理系統(四)
系列文
Angular 學習雜記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言