Pipe trong angular 4
Trong chương này, chúng ta sẽ tìm hiểu về Pipe trong Angular 4 (AngularJS gọi là filter).
Pipe được sử dụng để chuyển đổi dữ liệu.
Cú pháp sử dụng pipe
Cú pháp sử dụng pipe rất đơn giản:
{{du_lieu | pipe}}
Bài viết này được đăng tại [free tuts .net]
- du_lieu: là dữ liệu cần chuyển đổi
- pipe: là pipe mà bạn sử dụng.
Ví dụ bạn cần hiển thị 1 chuỗi ra màn hình là chữ hoa (uppercase)
{{ "Xin chào" | uppercase}}
Khi đó, ở trình duyệt sẽ hiển thị:
Như bạn đã thấy, chuối "Xin chào" đã được chuyển toàn bộ thành "XIN CHÀO".
Một số pipe dựng sẵn (built-in pipe) của Angular
Angular xây dựng sẵn 1 số built-in pipe thường dùng như bảng dưới.
Directive | Ghi chú |
lowercase | Chuyển chuỗi thành kí tự thường VD: Freetuts.net thành freetuts.net |
uppercase | Chuyển chuỗi thành kí tự hoa VD: Freetuts.net thành FREETUTS.NET |
date | Chuyển dữ liệu thành định dạng ngày tháng |
currency | Chuyển dữ liệu thành định dạng tiền tệ |
json | Chuyển dữ liệu về dạng JSON |
percent | Chuyển dữ liệu về dạng % |
decimal | Chuyển dữ liệu về dạng thấp phân |
slice | Cắt dữ liệu của mảng. Giống như Array.prototype.slice() |
một ví dụ nhỏ sử dụng các built-in pipe của Angular:
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'Angular 4 Project!'; todaydate = new Date(); jsonval = {name:'Rox', age:'25', address:{a1:'Mumbai', a2:'Karnataka'}}; months = ["Jan", "Feb", "Mar", "April", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"]; }
<div style = "width:100%;"> <div style = "width:40%;float:left;border:solid 1px black;"> <h1>Uppercase Pipe</h1> <b>{{title | uppercase}}</b><br/> <h1>Lowercase Pipe</h1> <b>{{title | lowercase}}</b> <h1>Currency Pipe</h1> <b> {{6589.23 | currency:"VND"}}</b><br/> <b> {{6589.23 | currency:"VND":true}}</b> // Giá trị true để hiển thị kí hiệu của tiền tệ. <h1>Date pipe</h1> <b>{{todaydate | date:'d/M/y'}}</b><br/> <b>{{todaydate | date:'shortTime'}}</b> <h1>Decimal Pipe</h1> <b>{{ 454.78787814 | number: '3.4-4' }}</b> // 3 là phần nguyên, 4-4 là phần thực </div> <div style = "width:40%;float:left;border:solid 1px black;"> <h1>Json Pipe</h1> <b>{{ jsonval | json }}</b> <h1>Percent Pipe</h1> <b>{{00.54565 | percent}}</b> <h1>Slice Pipe</h1> <b>{{months | slice:2:6}}</b> // 2 và 6 là vị trí bắt đầu và vị trí kết thúc </div> </div>
Tự tạo 1 pipe
Để tạo và sử dụng 1 pipe trong project bạn cần làm các bước sau:
1. Tạo pipe
2. Import pipe vào project: khai báo trong file app.module.ts
3. Sử dụng pipe trong file html
Cùng đi vào ví dụ cụ thể: tạo pipe sqrt để tính căn bậc hai
Tạo pipe
Đầu tiên, ta tạo file app.sqrt.ts
import {Pipe, PipeTransform} from '@angular/core'; @Pipe ({ name : 'sqrt' }) export class SqrtPipe implements PipeTransform { transform(val : number) : number { return Math.sqrt(val); } }
Dòng đầu tiên, ta import Pip
e và PipeTransform
từ thư viện của Angular core
import {Pipe, PipeTransform} from '@angular/core';
Tiếp đó khai báo tên cho pipe này là sqrt:
@Pipe ({ name : 'sqrt' })
Import pipe
Để import pipe vào project, ta cần khai báo chúng trong app.module.ts
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { NewCmpComponent } from './new-cmp/new-cmp.component'; import { ChangeTextDirective } from './change-text.directive'; // Chỉ ra đường dẫn của sqrt pipe import { SqrtPipe } from './app.sqrt'; @NgModule({ declarations: [ AppComponent, NewCmpComponent, ChangeTextDirective, // Khai báo sqrt pipe SqrtPipe ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Sử dụng pipe
Sử dụng pipe sqrt tương tự như các pipe khác: <b>Căn bậc hai của 25 là : {{25 | sqrt}}</b>
Kết quả hiển thị:
Nội dung bài pipe trong Angular 4 đến đây là hết rồi. Trong bài sau, chúng ta sẽ tìm hiểu về routing trong Angular 4.
Danh sách file tải về
Tên file tải về | Pass giải nén |
---|---|
Source code | freetuts.net hoặc gameportable.net |