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。这是用于将电话号码值格式化为“美国”格式的内容。

我必须添加“debounceTime(1000)”,因为在使用 patchValue 设置新格式化的值时会发生 JavaScript 错误,导致 valueChanges 再次触发。'debounceTime(1000)' 可以防止这种循环效应。

有没有更好的方法来格式化电话号码值?鉴于我必须使用'debounceTime(1000)',这似乎是一种黑客方法。

4

0 回答 0