91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular中如何實現自定義管道

發布時間:2021-09-06 13:38:03 來源:億速云 閱讀:165 作者:小新 欄目:web開發

這篇文章給大家分享的是有關Angular中如何實現自定義管道的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、管道的作用

方便我們在模板中對我們的數據進行格式化處理。

二、內置的常用管道

具體API參照官網查詢使用

  • DatePipe: 格式化日期

  • UpperCasePipe: 文本轉為全部大寫

  • LowerCasePipe: 文本轉為全部小寫

  • TitleCasePipe: 文本轉為標標題形式(如: hello world=>Hello World)

  • KeyValuePipe: 將對象轉為鍵值對形式

  • JsonPipe: 轉為JSON字符串(調試代碼時還是很有用的)

三、Angular管道特點

  • 管道串聯:將多個管道進行串聯對一個數據進行多次處理得到最終的效果。

  • 管道優先級:主要提到管道優先級要大于三目表達式的優先級,需要管道對三目表達式的結果處理請用小括號包裹。

  • 純/非純管道:

    • 管道默認為純管道,純管道必須是純函數。

    • 基礎類型和引用對象的引用變更時純管道執行。

    • 復合對象變更(更改數組元素)時非純管道執行。

四、自定義管道三部曲

  • 自定義管道類并實現PipeTransform接口

  • 通過@Pipe裝飾器將新建的類聲明為Angular管道

  • 注入管道,如在app.module.tsdeclarations數組中配合新建的管道類

五、自定義管道項目實踐

背景:

  • 我們最近需要在IE11瀏覽器上跑我們的Angular項目,因為最開始沒有考慮IE的兼容問題,使得其中最明顯的一個問題得以暴露,我們的列表接口的時間列全都了。

  • 因為接口返回的時間格式大多是“yyyy-MM-dd hh:mm:ss”,為了避免一個舊數據格式的不統一我們還會在模板中使用DatePipe管道來再次格式化數據,但是在IE瀏覽器環境new Date("2020-12-12 13:10:54")會提示無效的時間。

處理:

  • 通過搜索可以得到很多一致的處理方案就是將年月日中間的“-”進行替換為“/”。

  • 我考慮的解決方案就是通過自定義管道來對DatePipe擴展,在自定義管道中加入判斷瀏覽器環境來對date字符串進行處理。

遺留:

  • 遺留問題就是全局替換的風險還是感覺有點高。。。有實用的方案請支招呀。

Angular中如何實現自定義管道

管道類說明

  • transform函數實現自PipeTransform接口,參數value為我們需要處理的數據,參數args為按什么樣式來格式化。

  • 通過return將我們處理后的數據進行返回即可。

  • 管道通Angular的模塊一樣需要進行注冊后使用。

import { DatePipe } from "@angular/common";
import { Pipe, PipeTransform } from "@angular/core";

@Pipe({ name: "gDate", pure: true })
export class GDatePipe implements PipeTransform {
  transform(value: any, ...args: any[]) {
    let time = "";
    if (this.isIE()) {
      time = new DatePipe("en-US").transform(value.replace(/-/g, "/"), ...args);
    } else {
      time = new DatePipe("en-US").transform(value, ...args);
    }
    return time;
  }

  isIE(): boolean {
    return "ActiveXObject" in window;
  }
}

感謝各位的閱讀!關于“Angular中如何實現自定義管道”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延川县| 康保县| 茂名市| 辰溪县| 阿荣旗| 石门县| 玉山县| 乳山市| 灵丘县| 固原市| 利川市| 梅河口市| 神木县| 吉安市| 伊通| 汤原县| 雷山县| 微博| 乐平市| 叙永县| 逊克县| 潮州市| 博兴县| 麻城市| 怀化市| 安陆市| 信阳市| 巴塘县| 青川县| 长岛县| 福安市| 酉阳| 麻江县| 政和县| 镇宁| 高州市| 嵊泗县| 旬邑县| 南靖县| 平塘县| 平定县|