首页 > 解决方案 > 角反应形式,输入错误:没有名称的表单控件的值访问器

问题描述

我有一个定义如下的输入

    <form [formGroup]="loginForm"">
      <ion-input [formControlName]="'email'"></ion-input>

我的组件将表单声明为

this.loginForm = this.formBuilder.group({
  email: ['', Validators.compose([Validators.required, Validators.email])],
  password: ['', Validators.required]
});

然而在运行时角度会抛出这个错误

错误错误:没有名称的表单控件的值访问器:“电子邮件”

我确保我的模块中同时包含 ReactiveFormsModule 和 FormsModule 导入

我还缺少什么其他想法?

标签: angulartypescriptangular-reactive-forms

解决方案


您尚未导入<ion-input>声明的模块

详细说明

使用 Angular 9+,fullTemplateTypeCheck设置为false因此 Angular 不会抱怨 请参阅下面来自 github的声明 Ivy 不会抱怨 ng-template #36171 中的未知元素

这是由于 Ivy 的架构变化。在之前的编译器(ViewEngine)中,对未知元素的检查会在模板的解析过程中发生。在 Ivy 中,模板独立于相应的 NgModule 进行解析,因此范围内的组件/指令的信息不可用。相反,元素检查被推入模板类型检查阶段,并且它当前受到类型检查器配置的影响。但是,将 fullTemplateTypeCheck 设置为 true 时,它​​应该下降到模板中进行检查(当它为 false 时,它​​不会出于向后兼容性的原因)

引擎不会抱怨未知元素,但会抱怨 valueAccessor


推荐阅读