if (this.contactForm.controls.contacts.controls[0].controls) {
const contactForm = this.contactForm.controls.contacts.controls[0].controls;
contactForm.contactType.setValue(contact.ContactType);
contactForm.email.setValue(contact.ContactEmail);
const provider = this.providers.filter(p => p.PhoneProvider === contact.PhoneProvider)[0];
contactForm.phoneProvider.setValue(provider);
contactForm.phone.setValue(contact.ContactPhone);
this.openContact(dialog, alert);
this.cd.detectChanges();
}
我正在设置一个值以动态选择将抛出的输入:
错误错误:ExpressionChangedAfterItHasBeenCheckedError:表达 检查后已更改。上一个值:“ selected:false”。 当前值:“ selected:true”。
我使用this.cd.detectChanges();
来避免此错误,但仍然可以解决。如果不使用过滤器,则不会出现此错误。使用Timeout可能会解决问题,但这是一种怪诞的方式。
这是我在模板(有效表格)中的使用方式:
<nb-select outline placeholder="Select Provider" formControlName="phoneProvider">
<nb-option *ngFor="let p of providers" [value]="p">{{p.PhoneProvider}}</nb-option>
</nb-select>
该模板位于“对话框”中的同一组件中,其余设置值均有效,甚至PhoneProvider
均已设置,但控制台中存在错误。