我想要屏蔽一个字段,例如:拥有10位数字的电话号码(123-123-1234),我需要以这样的方式进行屏蔽(xxx-xxx-1234)。同时,在提交页面时,我需要向服务发送原始变量(123-123-1234)。
任何帮助将不胜感激。
谢谢。
任何帮助将不胜感激。
谢谢。
使用Angular的管道是一个很好的例子:
创建一个管道:mask.pipe.ts:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'mask' })
export class MaskPipe implements PipeTransform {
transform(phrase: string) {
let toBeReplaced = phrase.slice(0, 7);
return phrase.replace(toBeReplaced, "xxx-xxx");
}
}
import { MaskPipe } from "./mask.pipe";
@NgModule({
declarations: [ MaskPipe ]
// ...
})
在你的模板中使用管道:
// 组件的类:
export class AppComponent {
number: string = "123-123-1234";
}
// 组件模板:
<h1> {{ number | mask }}</h1>
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'mask'
})
export class NumberMaskPipe implements PipeTransform {
transform(number: string): string {
const visibleDigits = 4;
let maskedSection = number.slice(0, -visibleDigits);
let visibleSection = number.slice(-visibleDigits);
return maskedSection.replace(/./g, '*') + visibleSection;
}
}
在你的组件中可以这样做:
export class PhoneNumberComponent implements OnInit {
phoneNumber: string;
constructor() {}
ngOnInit() {
this.phoneNumber = "2131232131238867";
}
}
最后在组件中:
<p>Your phone number is: {{ phoneNumber | mask }}</p>
这里的管道是动态的,因此即使用户输入不同数量的数字,它也只会屏蔽到倒数第四位。请尝试使用不同数量的数字来运行示例。
以下是一个可用的 plunker 示例:https://plnkr.co/edit/NKRQpVB1Darw8MxrqucP?p=preview
let phoneBundle = {
realPhone: '123-123-1234',
displayPhone: 'xxx-xxx-' + this.phoneBundle.realPhone.substr(-1, 4)
};