加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 如果从父级重新初始化FormGroup,则自定义组件FormCon

发布时间:2020-12-17 08:33:44 所属栏目:安全 来源:网络整理
导读:从我的自定义组件中使用的父组件重新初始化formGroup时出现问题.我得到的错误是: There is no FormControl instance attached to form control element with name: ‘selectedCompany’ HTML: form [formGroup]="addForm" ... my-custom-component formCon
从我的自定义组件中使用的父组件重新初始化formGroup时出现问题.我得到的错误是:

There is no FormControl instance attached to form control element with
name: ‘selectedCompany’

HTML:

<form [formGroup]="addForm">
     ...
     <my-custom-component formControlName="selectedCompany"></my-custom-component>
     ...
</form

<我的定制-成分>是根据创建自定义formControl组件的有效方式创建的:https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html#implementing-controlvalueaccessor

零件

这是初始化formGroup变量addForm的代码:

let formTemp: any = {
    selectedCompany: new FormControl(null,[Validators.required]),}

this.addForm = this._formBuilder.group(formTemp);

第一次初始化addForm都很好.但是当我重新打开表单所在的模态,并且执行相同的组件代码时,会发生上述错误.

我发现重复初始化formGroup并不好,因为组件会丢失对旧formGroup的引用.

如果设置值是显示新表单所需的值,则.setValue是此处的解决方案:

零件

而不是重新初始化addForm,检查addForm是否先前已初始化,如果是,则仅为现有FormControls设置值:

if (this.addForm) {
    this.addForm.setValue({
        selectedCountry: null
    })
} else {

    let formTemp: any = {
        selectedCompany: new FormControl(null,}

    this.addForm = this._formBuilder.group(formTemp);
}

通过这种方式,我想,旧的addForm不会丢失引用,因此不会发生错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读