Angular pipe(管道)介紹及使用

Angular 中的管道其實(shí)就是angularjs中的過(guò)濾器,用來(lái)轉(zhuǎn)換數(shù)據(jù)然后顯示給用戶(hù)。
要?jiǎng)?chuàng)建一個(gè)管道,必須實(shí)現(xiàn) PipeTransform 接口。這個(gè)接口非常簡(jiǎn)單,只需要實(shí)現(xiàn)transform方法即可。
使用管道的幾個(gè)注意事項(xiàng):

  1. 管道可以鏈?zhǔn)绞褂?,還可以傳參
    {{date | date: 'fullDate' | uppercase}}
  2. 管道分兩種 純(pure)管道與非純(impure)管道
    默認(rèn)是pure的。
    Angular 只有在它檢測(cè)到輸入值發(fā)生了純變更時(shí)才會(huì)執(zhí)行純管道。 純變更是指對(duì)原始類(lèi)型值(String、Number、Boolean、Symbol)的更改, 或者對(duì)對(duì)象引用(Date、Array、Function、Object)的更改。

使用 impure 管道時(shí)候要小心,很可能觸發(fā)非常頻繁。

  1. 也是出于性能的考慮。Angular并沒(méi)有提供 angularjs 自帶的 Filter 和 OrderBy 過(guò)濾器,Angular官方推薦把過(guò)濾和排序放到組件中實(shí)現(xiàn),比如對(duì)外提供filteredHeroessortedHeroes 屬性

Angular提供了json和async管道,我們來(lái)分析下源碼

源碼解析

json管道

/node_modules/@angular/common/esm5/src/pipes/json_pipe.js
非常簡(jiǎn)單,就一行話(huà)。
JsonPipe.prototype.transform = function (value) { return JSON.stringify(value, null, 2); };

async管道

這個(gè)是Angular特有的管道,可以多使用
其實(shí)會(huì)處理兩種對(duì)象類(lèi)型,Observable或Promise,簡(jiǎn)單說(shuō)如果是Observable會(huì)執(zhí)行subscription方法,如果是Promise會(huì)調(diào)用then方法。如果是Observable當(dāng)組件銷(xiāo)毀時(shí)執(zhí)行unsubscribe方法取消訂閱。
node_modules/@angular/common/esm5/src/pipes/async_pipe.js:11

參考

https://segmentfault.com/a/1190000008759314

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 管道介紹 管道可以按指定規(guī)則將模板內(nèi)的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。使用管道需要用管道操作符|來(lái)連接模板表達(dá)式中左邊的輸入數(shù)據(jù)和右...
    oWSQo閱讀 1,313評(píng)論 0 0
  • 原網(wǎng)址:https://www.tuicool.com/articles/2qieEfq Angular 2 修仙...
    殺個(gè)程序猿祭天閱讀 546評(píng)論 0 1
  • 1、angularjs的幾大特性是什么? 雙向數(shù)據(jù)綁定、依賴(lài)注入、模板、指令、MVC/MVVM 2、列舉幾種常見(jiàn)的...
    2e9a10d418ab閱讀 1,474評(píng)論 0 10
  • 導(dǎo)語(yǔ) Angular2(已經(jīng)統(tǒng)一更名為Angular,而Angular1表示1.x版本,以下統(tǒng)稱(chēng)Angular都是...
    cipchk閱讀 2,852評(píng)論 1 46
  • 什么是管道 每個(gè)應(yīng)用開(kāi)始的時(shí)候差不多都是一些簡(jiǎn)單任務(wù):獲取數(shù)據(jù)、轉(zhuǎn)換它們,然后把它們顯示給用戶(hù)。獲取數(shù)據(jù)可能簡(jiǎn)單到...
    前端路上的小兵閱讀 457評(píng)論 0 3

友情鏈接更多精彩內(nèi)容