我有一个表格捕捉电话号码。我需要更新输入的值以匹配(999)999-9999格式。这是我的代码:
let formGroup: FormGroup = this.formBuilder.group
({
PhoneNumber: ['', CustomValidators.phone('US') ]
});
formGroup.valueChanges.debounceTime(1000).subscribe(
(data) =>
{
let formattedValue = new asYouType('US').input(data);
formGroup.controls['PhoneNumber'].patchValue(formattedValue);
}
);
'asYouType('US')。input(data)'来自libphonenumber-js。这是用于将电话号码值格式化为“美国”格式的内容。
我不得不添加'debounceTime(1000)',因为在使用patchValue设置新格式化的值时会发生JavaScript错误,导致valueChanges再次触发。 'debounceTime(1000)'可以防止这种循环效应。
有没有更好的方法来格式化电话号码值?这似乎是一种黑客方法,因为我必须使用'debounceTime(1000)'。