Angular(Material UI)-用户输入时的ssn格式



我有以下问题。我有ssn输入,它必须格式化为xxx-xx-xxxx,我可以使用管道转换实现这一点

<mat-label>SSN</mat-label>
<input matInput type="text" [ngModel]="ssn | ssn" (ngModelChange)="transformSsn($event)">
</mat-form-field>import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'ssn'
})
export class SsnPipe implements PipeTransform {
transform(a: string, ...args: unknown[]): unknown {
var fSSN = '';
fSSN += a.substr(0, 3);
fSSN += '-' + a.substr(3, 2);
fSSN += '-' + a.substr(5, 4);
return fSSN;
}
}```
But somehow I have to distinguish viewValue, which has to be xxx-xx-xxxx with modelValue which has to be xxxxxxxx( simple number). I've tried to add transformSsn function call on modelChanges event, but still no luck. Any help would be highly appreciated. 

如果展开transform()以检查字符串a是否已包含一些-,该怎么办?如果是这样,回来什么也不做?如果检查-是否在您想要的精确索引中,您当然可以扩展它,但这一点是相同的。

transform(a: string, ...args: unknown[]): unknown {
if (a.includes('-') return;
var fSSN = '';
fSSN += a.substr(0, 3);
fSSN += '-' + a.substr(3, 2);
fSSN += '-' + a.substr(5, 4);
return fSSN;
}

最新更新