我有一个捕获电话号码的表格。我需要更新输入的值以匹配 (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)',这似乎是一种黑客方法。