Angular2 管道

来源:http://www.cnblogs.com/SLchuck/archive/2016/08/14/5771316.html
-Advertisement-
Play Games

1. 說明 管道用來轉換模板顯示的內容,應用程式中經常出現獲取數據,轉換數據,顯示數據的邏輯。管道就是用來在轉換數據階段起作用的。主要存在兩種類型的管道,pure pipe和impure pipe 2. Pure Pipe Pure Pipe,stateless,關註於純粹對象的變更,檢測到輸入值發 ...


 

1. 說明

管道用來轉換模板顯示的內容,應用程式中經常出現獲取數據,轉換數據,顯示數據的邏輯。管道就是用來在轉換數據階段起作用的。主要存在兩種類型的管道,pure pipe和impure pipe

2. Pure Pipe

Pure Pipe,stateless,關註於純粹對象的變更,檢測到輸入值發生了 純變更 時才會執行 純管道 。 純變更 是指對原始類型值 (String 、Number 、 Boolean 、 Symbol) 的更改, 或者對對象引用 (Date 、 Array 、 Function 、 Object) 的更改。針對複雜對象內部元素的變更不會影響到純粹管道的執行。常見的內置管道

名稱

用法

說明

CurrencyPipe 

expression | currency[:currencyCode[:symbolDisplay[:digitInfo]]]

將數據轉化為指定格式的金額格式輸出

DatePipe 

expression | date[:format]

將時間數據轉換為指定格式的字元串

DecimalPipe

expression | number[:digitInfo]

將數據轉化為指定格式的數據格式輸出

LowerCasePipe

expression | lowercase

將數據轉化為小寫輸出

UpperCasePipe

expression | uppercase

將數據轉化為大寫輸出

JsonPipe 

expression | json

將數據轉化為json格式輸出

SlicePipe 

expression | slice:start[:end]

獲取指定位置從start到end的數據

3. Impure Pipe

Impure Pipe,stateful,Angular 會在每個組件的變更檢測周期中執行 非純管道 。 非純管道可能會被調用很多次,和每個按鍵或每次滑鼠移動一樣頻繁。常見的內置非純管道有

名稱

用法

說明

AsyncPipe

object | async

接受一個 Promise 或 Observable 作為輸入,並且自動訂閱這個輸入,最終返回它們給出的值

4. 如何使用

管道把數據作為輸入,然後轉換它,給出期望的輸出。管道使用包括三個方面:

(1). 表達式語法的寫法

(2). 如何參數設置

(3). 多個管道如何同時使用

從下麵的例子可以很方便的看出來以上三個方面如何編寫,

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

 

@Component({

    moduleId: 'app',

    selector: 'app',

    template: `

        <h5>your birthday is {{birthday | date:'MM/dd/yy' | uppercase}}</h5>

    `,

})

export class AppComponent {

    birthday: Date = new Date(2012, 10, 10);

}

表達式的寫法:在插值表達式中數據的右側通過 管道操作符 ( | ) 及 右側的管道函數 來表示

如何設置參數:在管道函數的後面添加一個冒號 ( : ) 再跟一個參數值,來為管道添加參數

多個管道同時使用:在插值表達式數據後面可以同時採用多個管道操作符 ( | ) 及 右側的管道函數來表示多個管道,執行順位為從左到右依次執行。

5. 自定義管道

我們來編寫一個自定義管道,管道的含義是截取指定長度的字元串。

5.1 模塊

首先我們引入對應的模塊及函數Pipe

import { Pipe, PipeTransform } from '@angular/core';

5.2 註解

從@angular/core中導入Pipe及PipeTransform函數後,可以使用@ Pipe ()來標示組件類為一個Pipe,@標示註解的一種標識,用來普通類附加對應的元數據信息。

5.3 元數據

@Pipe將元數據的信息附加到類上,我們來瞭解一下常用的元數據信息都有哪些:

@Directive({

name: 'sub',

pure: false

})

name:管道的名稱,表示在使用管道所採用的名稱,例如 date等,

pure:布爾值,純管道或者非純管道

5.4 管道類

管道類包含實現數據轉化的主要邏輯,管道類必須實現PipeTransform的transform的方法,在數據轉化過程中會自動調用這個方法,並將結果返回。我們實現截取的管道類代碼如下

export class SubPipe implements PipeTransform {

    transform(value: string, length: number): string {

        return value.substring(0, length);

    }

}

最後實現的代碼如下:

import { Pipe, PipeTransform } from '@angular/core';

 

@Pipe({

    name: 'sub',

    pure: false

})

export class SubPipe implements PipeTransform {

    transform(value: string, length: number): string {

        return value.substring(0, length);

    }

}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 執行環境(Execution Context,也稱為"執行上下文")是JavaScript中最為重要的一個概念。執行環境定義了變數或函數有權訪問的其它數據,決定了各自的行為。當JavaScript代碼執行的時候,會進入不同的執行環境,這些不同的執行環境就構成了執行環境棧。 JavaScript中主要 ...
  • <style type="text/css">html,body{height:100%;}.text{width:100%;height:30%;background:#ccc;text-align:center;position:absolute;}.text:before{content:'' ...
  • CSS常用樣式之段落樣式(行高、段落縮進、段落對齊、文字間距、文字溢出、段落換行) ...
  • PFold.js是一款摺疊紙片插件,支持定義摺疊紙牌數量、摺疊動畫效果、摺疊方向,而且還支持摺疊結束後回調方法。 線上實例 使用方法 複製 複製 參數詳解 方法Method 下載 ...
  • CSS製作三角形和按鈕 用上一篇博文中關於邊框樣式的知識點,能製作出三角形和按鈕。 我先說如何製作三角形吧,相信大家在平時逛網站的時候都會看到一些導航欄中的三角形吧,比如說: 網易首頁的頭部菜單欄中,也會有這樣的三角形 當滑鼠經過時,三角形會垂直翻轉,如下 現在我分享製作三角形的做法,主要是利用邊框 ...
  • 對AngularJS的作用域做深入剖析,該隨筆主要分為兩大板塊:JavaScript原型鏈、AngularJS作用域。 ...
  • 對於CSS的學習到此就告一段落了,其中自己感覺在CSS的學習中最有效的方法還是去進行大量的案例仿寫,這樣我們可以學習別的人是怎樣佈局的,不會不要緊,可以多去學習借鑒一下別人的經驗啊。 這兩天又接觸了onmouseover事件和onmouseout事件,一直以為它們只是簡單的分別實現滑鼠指針移動到元素 ...
  • 寫在前面本人才是開始學習前端的菜鳥有很多不懂的忘大神指點 html全名Hyper TextMarkup Language 下麵說說常用的到的html的元素標簽 h1 h2 h3 h4 h5 h6 6級的標題標簽 ul 無序列表標簽 子元素用 li ol 有序列表標簽 子元素用 li a 超鏈接標簽 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...