我在这里和那里进行了搜索,但找不到关于格式化电话号码的特定信息。

目前,我正在通过以下格式从JSON检索电话号码:

25565115

但是,我想实现以下结果:

02-55-65-115

为此,我认为我需要使用自定义管道,并且我认为没有内置管道可以自动执行此操作。

您能给我一些指导吗?

最佳答案

StackBlitz

TS中的pipe实现如下所示

import { Pipe } from "@angular/core";

@Pipe({
  name: "phone"
})
export class PhonePipe {
  transform(rawNum) {
    rawNum = rawNum.charAt(0) != 0 ? "0" + rawNum : "" + rawNum;

    let newStr = "";
    let i = 0;

    for (; i < Math.floor(rawNum.length / 2) - 1; i++) {
      newStr = newStr + rawNum.substr(i * 2, 2) + "-";
    }

    return newStr + rawNum.substr(i * 2);
  }
}

在NgModule的声明中声明PhonePipe

用法:

import {Component} from 'angular/core';

@Component({
  selector: "my-app",
  template: `
    Your Phone Number: <input [(ngModel)]="myNumber" />
    <p>
      Formatted Phone Number: <b>{{ myNumber | phone }}</b>
    </p>
  `
})
export class AppComponent {
  myNumber = "25565115";
}

有许多可以改进的地方,我只是针对特定情况进行了改进。

09-25 20:00