【发布时间】:2018-06-12 02:15:30
【问题描述】:
我将ng2-tel-input 与反应形式方法(Angular)一起使用。
问题:
当我打开标志下拉列表并选择一个值时,它工作正常。
值正确显示到输入中,但国家标志没有改变,默认标志出现。
当我在输入中手动更改值时,标志会自动更改,否则会显示默认国家/地区标志。
示例:
值格式:+917878747474
所选国家/地区:印度
默认国家:美国
当我按下设定值时。手机没有设置输入,但标志保持不变
html
<form [formGroup]="form">
<small class="phone-text">{{ placeHolder }}</small>
<md-input-container class="full-width pt-0">
<input type="text"
mdInput
formControlName="phone"
ng2TelInput
[ng2TelInputOptions]="{initialCountry: initialCountry}"
(hasError)="hasError($event)"
(ng2TelOutput)="hasOutPut($event)"
#phoneInput
maxlength="45"/>
</md-input-container>
<button type="button" (click)="setValue()">Set Value</button>
</form>
组件
import {Attribute, Component, forwardRef, Input} from '@angular/core';
import {FormBuilder, FormGroup} from '@angular/forms';
@Component({
selector: 'app-phone',
templateUrl: './phone.component.html',
styleUrls: ['./phone.component.scss']
})
export class PhoneComponent implements ControlValueAccessor, Validator {
placeHolder = 'Default Value';
initialCountry = 'us';
form: FormGroup;
constructor(private _fb: FormBuilder) {
this._initForm();
}
setValue(): void {
const phone = '+917878747416'
this.form.setValue({phone: phone});
}
private _initForm(): void {
this.form = this._fb.group({
'phone': ['']
});
}
hasError(event: any): void {
if (!event && this.form.value.phone !== '') {
this.form.get('phone').setErrors(['invalid_cell_phone', true]);
}
}
hasOutPut(event: any): void {
this.form.patchValue({phone: event});
}
}
任何帮助将不胜感激。
【问题讨论】:
-
你能提供一个plunkr吗?
-
我已经创建了 plunkr,但我不知道如何在 plunkr 中添加包。我添加但得到 404。plunkr
-
我创建了一个小项目,按照您的说法创建了一个反应式表单,并使用您提供的代码,一切正常。您能否提供更多代码或任何其他信息,否则我认为我们无法为您提供帮助。
-
@Olezt 我已经更新了问题并将我的所有代码放在这里。感谢您的宝贵时间
-
好的,现在问题很清楚了。您以编程方式从组件更改您的值,并且标志不会更改。我能够重现此问题,但找不到任何解决方法。
标签: angular