Angular Material Table

2018. 4. 2. 22:00

지난 포스트에 예고했던 Material Table에 대해 알아보겠습니다.


0. Import MatTableModule


이제는 익숙한 과정이죠?

Material Table을 사용하기 위해서 Module을 추가합니다.


App.module.ts에 MatTableModule을 Import 합니다.

import { MatTableModule } from '@angular/material/table';
@NgModule({
  ...
  imports: [
    ...
    MatTableModule
  ],
  ...
})
export class AppModule { }


1. mat-table 추가


이제 화면(Template)에 테이블을 추가합니다.

저는 budget.component.html에 넣었습니다.

<mat-table [dataSource]="dataSource">
</mat-table>

dataSource에 Property Binding 보이시죠?

mat-table에서 사용할 데이터에 TypeScript 변수를 넣은거죠.


2. dataSource 추가


mat-table에 바인딩된 데이터를 추가해보겠습니다.

budget.component.ts파일에 data를 추가합니다.

import { MatTableDataSource } from '@angular/material';

@Component({
    ...
})
export class BudgetComponent implements OnInit{
    ...
    consumptions = [{
        amount: 12000,
        desc: "food"
    },{
        amount: 10000,
        desc: "beverage"
    },{
        amount: 12000,
        desc: "dissert"
    }];
    dataSource = new MatTableDataSource(this.consumptions);
    ...
}

MatTableDataSource 모듈이 필요합니다.

테이블에 보여줄 데이터를 Array 형태로 만들구요.

MatTableDataSource 객체를 생성하여 dataSource에 넣어줍니다.

그러면 mat-table과 바인딩될 준비가 끝납니다.


3. Column 정의


테이블의 Column Template을 정의합니다.

어느 제목에 어느 데이터를 넣을지를 의미합니다.

mat-header-cell 에는 제목이 들어가구요.

mat-cell 에는 어떤 데이터를 보여줄지 넣습니다.

저는 아래와 같이 정의하였습니다.

consumption의 amount와 desc를 두 개 column으로 보여줍니다.

<mat-table [dataSource]="dataSource">
  <!-- Amount Column -->
  <ng-container matColumnDef="amount">
    <mat-header-cell *matHeaderCellDef> Amount </mat-header-cell>
    <mat-cell *matCellDef="let consumption"> {{consumption.amount}} </mat-cell>
  </ng-container>

  <!-- Description Column -->
  <ng-container matColumnDef="desc">
    <mat-header-cell *matHeaderCellDef> Description </mat-header-cell>
    <mat-cell *matCellDef="let consumption"> {{consumption.desc}} </mat-cell>
  </ng-container>
</mat-table>


4. Row 정의


테이블의 Row Template을 정의합니다.

Row, Column을 어떻게 보여줄지 정의하면 테이블이 되죠.

amount와 desc를 각 열에 보여주기로 합니다.

<mat-table [dataSource]="dataSource">
  <!-- Amount Column -->
  <ng-container matColumnDef="amount">
    <mat-header-cell *matHeaderCellDef> Amount </mat-header-cell>
    <mat-cell *matCellDef="let consumption"> {{consumption.amount}} </mat-cell>
  </ng-container>

  <!-- Description Column -->
  <ng-container matColumnDef="desc">
    <mat-header-cell *matHeaderCellDef> Description </mat-header-cell>
    <mat-cell *matCellDef="let consumption"> {{consumption.desc}} </mat-cell>
  </ng-container>

  <!-- Row Template -->
  <mat-header-row *matHeaderRowDef="['amount','desc']"></mat-header-row>
  <mat-row *matRowDef="let consumption; columns: ['amount','desc'];">
  </mat-row>
</mat-table>

이렇게 하면 아래와 같이 Material Table이 보여집니다.

여기서 Table에 살짝 shadow를 넣어줬는데요.

div로 감싸주고 mat-elevation-z1이라는 class를 추가하면 됩니다.


Mat Table 화면


Material Table을 이용하면 몇 가지 장점이 있습니다.

정렬이나 페이징 필터링 등의 기능을 추가하기 쉽구요.

어느정도 반응형을 지원합니다.

필요할 때 추가해서 사용해보도록 할게요.


소스주소: https://github.com/jsrho1023/account-book


출처: 

https://material.io/

https://material.angular.io/components/table/overview

'IT Tech > Angular' 카테고리의 다른 글

Angular Domain Model  (0) 2018.04.24
Angular 테스트(Test) 하기  (0) 2018.04.11
Angular Material Icon  (0) 2018.03.18
Angular Material Header Toolbar  (0) 2018.03.11
Angular Directive (Structural Directive)  (0) 2018.02.12

TechTrip IT Tech/Angular

PC 조립하며 당황했던 순간 3가지

2018. 4. 1. 16:53

PC 부품들의 호환성을 따지는 부분이 어렵지 실제 부품 조립은 쉽다.

이렇게 생각했는데 당황하는 부분들이 생기더군요.


조립한지 오래되어 그 사이 H/W와 인터페이스가 발전했으니까요.

조립하면서 3번 정도 당황했던 것 같네요.


사실 가장 첫 스텝부터 당황합니다.


1. Main Board(Mother Board)에 APU(CPU+GPU) 결합


Ryzen 이 녀석이 정사각형..

방향이 고민되기 시작하였습니다.

다행히도 방향을 맞출 수 있는 힌트가 존재하더군요.


1) APU 모퉁이의 금색 삼각형과 소켓의 삼각형 음각 부분을 맞춥니다.

2) 소켓 문구(SOCKET AM4)와 APU의 문구의 방향을 일치시킵니다. 


RYZEN APU 방향 파악하기


APU를 결합하고, 쿨러를 달고 나서 또다시 당황합니다.


2. PCI-E SSD


이전의 SATA 케이블 방식과는 다른 너무나도 작은 SSD 입니다.

어렵사리 슬롯을 찾아 꽂으니, 경사지게 들려버립니다.

Motherboard와 동봉된 자그마한 나사가 필요해지는 순간이지요.


1) PCI-E라고 쓰여진 Slot을 찾아 끼웁니다.

2) 경사지게 들린 SSD를 보드에 나사로 고정시켜줍니다.


SSD를 PCI-E Slot에 끼우고 고정 


보드가 거의 다 완성되어갈 즈음 케이스를 결합합니다. 


3. 전원 제어 버튼 및 Audio 연결부 보드와 결합


Desktop 케이스에 제어 버튼과 Audio 관련 잭이 있습니다.

보드에 직접 꽂을 필요 없이 케이스 전면부에 연결하죠.


그런데 PIN 구성이 익숙한 모양이 아니었습니다.

Audio와 Function Panel이 따로 분리되어있더군요.

Mother Board의 Manual이 필요해지는 순간이 온거죠.


1) HD AUDIO는 AAFP를 찾아 구멍에 맞게 연결합니다.

2) F_Panel의 구성에 맞게 전원과 LED를 꽂습니다.


Function Panel Pin(Power, Reset, LED)과 HD Audio Pin


나머지 부분들 (Power연결, 쿨러, USB Slot 등)은 쉽죠.

연결이 되는 모양에 맞추어 끼우면 되기 때문입니다.

안맞는 곳에는 연결이 안되요.


모니터를 연결하고 전원을 켜면 BIOS화면이 반갑게 맞아줍니다.

TechTrip 놀면서 배우기.

개발용 PC 조립!

2018. 3. 31. 23:56

오랫동안 사용하던 노트북을 Desktop으로 바꾸기로 결심하였습니다.

Dell Studio 1558 안녕....

거의 10년을 함께 해온 PC 하나도 아쉽지 않아요. ㅋㅋㅋ

베터리도 수명이 다했고, 너무 느렸거든요.


오늘은 제가 조립한 PC부품과 완성 사진만 올려보려구요.

사양은 아래와 같습니다.


 CPU

 AMD RYZEN 5 2400G(RAVEN RIDGE)

 MAINBOARD

 ASUS PRIME B350M-A

 RAM

 SAMSUNG DDR4 8G PC4 19200* 2

 SSD

 ADATA XPG SX6000 M.2 2280(256GB)

 POWER

 스카이디지털 파워스테이션4

 CASE

 마이크로닉스 Bohemian Delfino


RYZEN에 내장된 그래픽을 사용할 예정이라 그래픽 카드는 없습니다.

조립 후 이상없이 빠르게 잘 돌아가고 있네요.


PC 부품 사진


메인보드와 CPU, SSD는 아래와 같이 생겼습니다.


메인보드, CPU, SSD


조립을 하고, OS를 설치하여 드디어 블로그를 작성하고 있습니다.


조립 후


조립하면서 당황했던 부분들 추후 공유하도록 하겠습니다.

TechTrip 놀면서 배우기.