[Angular] Pipeλ? (feat. Built-in Pipe)
Pipeλ?
Angular 곡μ λ¬Έμμλ μλμ κ°μ΄ μκ°νκ³ μμ΅λλ€.
μ§λ νλ©΄ "ν΄λμ€λ₯Ό νμ΄νλ‘ νμνκ³ κ΅¬μ± λ©νλ°μ΄ν°λ₯Ό μ 곡νλ λ°μ½λ μ΄ν°" μ λλ€.
κ·Έλ°λ° μ΄λ κ² λ§νλ©΄ λ¬΄μ¨ λ§μΈμ§ μ΄ν΄κ° μλμ£ ?
μ΄ν΄νκΈ° μ½κ² λ§μ λ리면 HTMLμμ λ¬Έμλ μ«μλ₯Ό μνλ κ²μ λ§κ² λ³νν λ μ°λ κ²μ λλ€.
μλλ Angularμμ built-inμΌλ‘ μ 곡λλ Pipe API List μΈλ°μ.
νλμ© μ΄ν΄λ³΄λλ‘ νκ² μ΅λλ€.
1. λ¬Έμ νμ΄ν
λ¨Όμ κ°μ₯ μ¬μ΄ κ²λΆν° λ¬Έμλ₯Ό λ³νμν€λ νμ΄νμ λλ€.
UpperCasePipe,LowerCasePipe, TitleCasePipe λ±μ΄ μλλ° λ§ κ·Έλλ‘ λ¬Έμλ₯Ό λ³ν μμΌμ£Όλ κ²μ λλ€.
μ¬μ©νλ λ°©λ²μ λνλ΄κ³ μΆμ λ¬Έμλ₯Ό '|' κ²κ³Ό ν¨κ» νμ΄ν μ΄λ¦μ μ μ΄μ£Όμλ©΄ λ©λλ€.
μ°μ tsνμΌμ μλμ κ°μ΄ nameμ μ ν΄μ£Όμκ³ (μ€ ν°μ€ν 리μ TypeScriptλ μ΄μ μ§μλλ€)
name: string = 'Fomagran';
HTML νκ·Έμ μ μ©ν΄ μ£Όμλ©΄ λ©λλ€.
<div>{{ name | uppercase }}</div>
<div>{{ name | lowercase }}</div>
<div>{{ name | titlecase }}</div>
κ·ΈλΌ μλμ κ°μ΄ λ¬Έμκ° λ³νλΌμ λνλκ² λ©λλ€.
2. μ«μ νμ΄ν
κ·Έ λ€μμΌλ‘ μ«μμ κ΄λ ¨λ νμ΄νλ₯Ό λ³΄κ² μ΅λλ€.
λ¨Όμ μμμ μ΄ μλ μ«μλ₯Ό μνλ νμμ λ§κ² λνλ΄κ³ μΆλ€λ©΄ DecimalPipeλ₯Ό μ΄μ©νλ©΄ λλλ°μ.
tsνμΌμ piλ₯Ό λνλ΄λ μ«μλ₯Ό λ§λ€μ΄μ£Όκ³
pi: number = 3.14159265359;
HTML νκ·Έμ number νμ΄νλ₯Ό μ μ©ν΄ μ€λλ€.
<div>{{ pi | number }}</div>
<div>{{ pi | number: "1.4-5" }}</div>
κ·Έλ₯ numberλ§ μ¬μ©νμμ κ²½μ° defaultκ° μμμ 3μ리κΉμ§ λνλκ³ , μ μμΈ λΆλΆ x. μμμΈ λΆλΆμ κΈΈμ΄ n~mκΉμ§λ₯Ό μ μ©ν μ μμ΅λλ€.
3. κΈ°νΈ νμ΄ν
ννμ λ¨μλ₯Ό λ€μ λΆμΌ μλ μκ³ νΌμΌνΈλ₯Ό νμν μλ μλλ°μ.
tsνμΌμ percentμ moneyλ₯Ό λ§λ€μ΄ μ€λλ€.
percent: number = 0.259;
money: number = 0.35;
HTML νκ·Έμ μλμ κ°μ΄ μ μ©ν΄ μ€λλ€.
<div>{{ percent | percent }}</div>
<div>{{ percent | percent: "2.3" }}</div>
<div>{{ money | currency }}</div>
<div>{{ money | currency: "KRW":"symbol":"1.2" }}</div>
μ DecimalPipeμμ μ¬μ©ν μ μ λ° μμμ μ λνλ΄λ λ°©λ²λ λκ°μ΄ μ μ©ν μ μμ΅λλ€.
4. λ μ§ νμ΄ν
DatePipeλ₯Ό μ΄μ©ν΄μ λ μ§ νμμ λ§κ² λνλΌ μλ μμ΅λλ€.
tsνμΌμ νμ¬ dateλ₯Ό λ§λ€μ΄ μ€λλ€.
date: number = Date.now();
HTMLνκ·Έμ μλμ κ°μ΄ μ μ©ν΄ μ€λλ€.
<div>{{ date | date: "medium" }}</div>
<div>{{ date | date: "YYYY/MM/dd" }}</div>
Angularμμ μ΄λ―Έ λ§λ€μ΄ λμ short, medium, longμ μ¬μ©ν μλ μκ³
(μ¬κΈ° κ°μλ©΄ λ μμΈν νμΈν μ μμ΅λλ€.)
μλ μ¬μ©νλλλ‘ YYYY/MM/ddμ κ°μ νμμΌλ‘λ λ°κΏ μ μμ΅λλ€.
5. κ°μ²΄ νμ΄ν
tsνμΌμ objectμ jsonκ°μ²΄λ₯Ό λνλ΄λ jsonObjectλ₯Ό λ§λ€μ΄ μ€λλ€.
object: { [key: number]: string } = { 1: 'one', 2: 'two', 3: 'three' };
jsonObject: Object = {
foo: 'bar',
baz: 'qux',
nested: { xyz: 3, numbers: [1, 2, 3, 4, 5] },
};
μλμ κ°μ΄ HTMLνκ·Έμ μ μ©ν΄ μ€λλ€.
<div *ngFor="let item of object | keyvalue">
{{ item.key }}. {{ item.value }}
</div>
<div>
<pre>{{ jsonObject | json }}</pre>
</div>
μλμ κ°μ΄ κ°μ²΄λ₯Ό ν€,λ°Έλ₯ κ°μ λ§κ² μνλ ννλ‘ λνλΌ μλ μκ³ , JSON νμμ²λΌ 보μ΄κ² λνλΌ μλ μμ΅λλ€.
6. λ°°μ΄ νμ΄ν
sliceλ₯Ό μ΄μ©ν΄μ λ°°μ΄μ μλΌμ 보μ¬μ€ μλ μμ΅λλ€.
tsνμΌμ μλμ κ°μ΄ λ°°μ΄μ λ§λ€μ΄ μ£Όκ³ ,
array: number[] = [1, 2, 3, 4, 5, 6, 7];
HTML νκ·Έμ sliceλ₯Ό μ μ©ν΄ μ€λλ€.
<div>{{ array | slice: 0:4 }}</div>
<div>{{ array | slice: -2 }}</div>
μλμ κ°μ΄ sliceκ° μ μ©λλ κ²μ λ³Ό μ μμ΅λλ€.
7. λΉλκΈ° νμ΄ν
λ§μ§λ§μΌλ‘ λμ€μ λ°λκ² λλ λΉλκΈ° νμ΄νμ λν΄μ μμ λ³΄κ² μ΅λλ€.
tsνμΌμ 1μ΄μ νλ²μ© λ°λλλ‘ νλ Observableμ λ§λ€μ΄ μ€λλ€.
time = new Observable<string>((observer: Observer<string>) => {
setInterval(() => observer.next(new Date().toString()), 1000);
});
HTML νκ·Έμ asyncνμ΄νλ₯Ό μ μ©ν΄ μ€λλ€.
<div>Time: {{ time | async }}</div>
μλμ κ°μ΄ μ΄μ λ°λΌ μ λ°μ΄νΈ λλ κ²μ λ³Ό μ μμ΅λλ€.
μ€λμ μ΄λ κ² μ§μ μ½λλ₯Ό ꡬννμ§ μκ³ λ νΈλ¦¬νκ² HTMLμμ μνλ ννλ‘ λ³ννμ¬ λνλΌ μ μλ νμ΄νμ λν΄ μμ 보μμ΅λλ€.
λλΆμ μ΄μ νΈνκ² HTMLμμ μνλ λ¬Έμλ μ«μλ₯Ό ννν μ μκ² λμμ΅λλ€.
μ κ° μ 리ν κ² μΈμλ λ λ€μν νμ΄νλ€μ΄ μμΌλ κΆκΈνμ λΆλ€μ 곡μ Angular ννμ΄μ§μμ νμΈνμλ©΄ λ©λλ€.
νΉμλΌλ νλ¦° μ μ΄ μκ±°λ κΆκΈνμ λΆλΆμ΄ μλ€λ©΄ λκΈλ‘ μλ €μ£ΌμΈμ!
Reference