当我向表单添加1-n动态联系人时,我对DOM抱怨(非致命)有关重复ID的问题.任何建议,将不胜感激.
错误:[DOM]找到2个具有非唯一ID的元素#contactFirstName:
HTML:
<div id="contactsSection"> <div formArrayName="contacts"> <div class="form-group" *ngFor="let contact of this.editForm.controls.contacts.controls; let i = index" [formGroupName]="i"> <div> <div class="row"> <div class="form-group col-lg-4 col-md-4 col-sm-4 col-xs-4"> <label for="contactFirstName">First Name:<sup>*</sup></label> <input type="text" class="form-control" id="contactFirstName" name="contactFirstName" formControlName="contactFirstName" required placeholder="First Name"> **Typescript Code:** To initialize the form: this.editProducerForm = this.fb.group({ ... contacts: this.fb.array([]) }); To add a contact dynamically to the form I call: let control = this.editProducerForm.get('contacts') as FormArray; control.push(this.createContact(firstName,...)); which uses this method: createContact(firstName: string = '',...): FormGroup { let ctc = this.fb.group({ contactId: id,contactFirstName: [firstName,Validators.required ],contactMobilePhone: [mobilePhone,CustomValidators.phone ],contactAgentLicense: agentlicense,contactLastName: [lastName,contactEmail: [email,CustomValidators.email ],contactAgentLicenseExpirationDate: licenseExpirationDate,contactTitle: [titleUid,ssn: ss }); ctc.markAsUntouched(); return ctc; }
编辑:
我尝试了为每个控件ID添加索引的解决方案.我不相信这是一个可行的解决方案,因为我必须协调代码来访问每个控件,主要是因为如果打破用于动态添加每组控件的formbuilder代码:
let ctc = this.fb.group({
contactId:id,
contactFirstName:[firstName,Validators.required],
contactMobilePhone:[mobilePhone,CustomValidators.pattern],
contactAgentLicense:agentlicense,
contactLastName:[lastName,…
有趣的是,当我通过事件(按钮推送)运行此代码时,DOM不会抱怨.当我作为初始化的一部分运行相同的代码时,它会抱怨.
由于每个FormGroup都有一个唯一的名称,DOM是不是足够智能,以实现一个独特的FormGroup / Control Id是唯一的,而不是查看FormGroup名称的每个Control Id独立?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。