Angular2模型驱动表单格式电话号码值

时间:2017-04-12 16:15:49

标签: angular angular2-forms angular2-formbuilder reactive-forms

我有一个表格捕捉电话号码。我需要更新输入的值以匹配(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)'。

0 个答案:

没有答案