Ionic 7/Angular 15:NG01000表单控件未注册错误求助
Ionic 7/Angular 15表单NG01000错误无法解决
在Ionic 7+Angular 15项目的表单中触发NG01000错误:
错误信息:ERROR Error: NG01000: 此组尚未注册任何表单控件。如果您使用ngModel,可能需要在下一个周期再检查(例如使用setTimeout)
已尝试setTimeout、ChangeDetector、ngAfterViewInit等多种方案,均无法解决问题,现将相关代码及信息整理如下:
相关TS代码
if (this.postData.token) { this.detailService.getDetails(this.postData).subscribe( (res: any) => { let userid = this.authUser.user_id; this.form.setValue({ firstname: res[0].firstname, lastname: res[0].lastname, email: res[0].email, phone: res[0].phone, relationship: res[0].relationship, userid: userid }); return this.detail = res; }, (error: any) => { this.toastService.presentToast('Something went wrong. Please try again.'); } ); }
HTML代码
<form #myForm="ngForm"> <ion-item lines="none" class="ion-margin itemDesign"> <ion-icon name="person-outline" slot="end" color="medium"> </ion-icon> <ion-input label="First Name" autocomplete="off" name="firstname" type="text" ngModel required></ion-input> </ion-item> <ion-item lines="none" class="ion-margin itemDesign"> <ion-icon name="person-outline" slot="end" color="medium"> </ion-icon> <ion-input label="Last Name" autocomplete="off" type="text" name="lastname" ngModel required></ion-input> </ion-item> <ion-item lines="none" class="ion-margin itemDesign"> <ion-icon name="mail-outline" slot="end" color="medium"> </ion-icon> <ion-input label="Email" autocomplete="off" type="email" name="email" ngModel required></ion-input> </ion-item> <ion-item lines="none" class="ion-margin itemDesign"> <ion-icon name="phone-portrait-outline" slot="end" color="medium"> </ion-icon> <ion-input label="Phone" autocomplete="off" name="phone" type="tel" ngModel></ion-input> </ion-item> <ion-item lines="none" class="ion-margin itemDesign"> <ion-icon name="people-outline" slot="end" color="medium"> </ion-icon> <ion-input label="Relationship" autocomplete="off" type="text" name="relationship" ngModel></ion-input> </ion-item> <ion-input type="hidden" autocomplete="off" name="userid" ngModel></ion-input>
尝试过的form标签写法
<form #myForm="ngForm" (ngSubmit)="confirm(myForm.value)">
移至ngAfterViewInit的代码
ngAfterViewInit(){ this.auth.userData$.subscribe((res: any) => { this.authUser = res; let user_id = this.authUser.user_id; this.getDetail(); }); }
补充跳转逻辑(与错误相关的特殊操作)
因创建/更新条目后列表无法自动更新,需刷新才显示,未使用routerLink跳转,改用以下代码(使用routerLink时无此错误):
redirect() { setTimeout(() => { this.router.navigateByUrl('refresh', { skipLocationChange: true }).then(() => { setTimeout(() => { this.router.navigate(['home/settings/detaillist']); }, 0); }); }, 0); }
内容的提问来源于stack exchange,提问作者techwestcoastsfosea
相关产品推荐
相关产品推荐

