電話番号を取得するフォームがあります。入力した値を (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から取得されます。これは、電話番号の値を「US」形式にフォーマットするために使用されるものです。
「debounceTime(1000)」を追加する必要がありました。これは、新しくフォーマットされた値を patchValue で設定すると JavaScript エラーが発生し、valueChanges が再び発生するためです。「debounceTime(1000)」は、この循環効果を防ぎます。
電話番号の値をフォーマットするより良い方法はありますか? 「debounceTime(1000)」を使用する必要があることを考えると、これはハック アプローチのようです。