0

電話番号を取得するフォームがあります。入力した値を (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)」を使用する必要があることを考えると、これはハック アプローチのようです。

4

0 に答える 0