首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角4中的模板解析错误“没有将exportAs设置为ngModel的指令”

角4中的模板解析错误“没有将exportAs设置为ngModel的指令”
EN

Stack Overflow用户
提问于 2018-03-23 18:39:58
回答 2查看 1.3K关注 0票数 2

我创建了一个示例项目,在其中我使用了组件,一个带有注册名,另一个具有登录名,同时验证注册页面,给出下面提到的错误。

当表单验证时,错误发生

代码语言:javascript
复制
>Uncaught Error: Template parse errors:
There is no directive with "exportAs" set to "ngModel" ("
        </div>
        <div>
          <input type="email" name="emailId" placeholder="Email" [ERROR ->]#email="ngModel" [ngModelOptions]="{updateOn: 'change'}" />
        </div>

这是我的注册组件,我在其中创建了一个表单,并试图验证该表单。

registration.component.html

代码语言:javascript
复制
    <form #varSubmit="ngForm" (ngSubmit)="onSubmit(varSubmit)" novalidate>
        <div>
          <div>
            <input type="text" name="fName" placeholder="First Name" required />
          </div>
        </div>
        <div>
          <div>
            <input type="text" name="lName" placeholder="Last Name" required/>
          </div>
        </div>
        <div>
          Date of Birth:
          <input type="date" name="dob" />
        </div>
        <div>Gender:
          <input type="radio" value="rbtnMale" name="gender" checked/>
          <label for="rbtnMale">Male</label>
          <input type="radio" value="rbtnFemale" name="gender" />
          <label for="rbtnFemale">Female</label>
        </div>
        <div>
          <input type="email" name="emailId" placeholder="Email" #email="ngModel" [ngModelOptions]="{updateOn: 'change'}" />
        </div>
        <div [hidden]="email.pristine || email.valid">Email Shouldnt Empty...!</div>
        <div>
          <div>
            <input type="password" name="pwd" placeholder="Password" />
          </div>
        </div>
        <div>
          <div>
            <input type="password" name="cPwd" placeholder="Confirm Password" />
          </div>
        </div>
        <div>
          <input type="submit" name="btnSubmit" />
          <input type="reset" name="btnReset" />
        </div>
      </form>

这是我的app.module.ts文件,我在这里导入FormsModule

app.module.ts页面

代码语言:javascript
复制
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, Component } from '@angular/core';

import { AppComponent } from './app.component';
import { LoginComponentComponent } from './login-component/login-component.component';
import { FormsModule } from '@angular/Forms';
import { UserRegistrationComponent } from './user-registration/user-registration.component';
import { RouterModule } from '@angular/router';


@NgModule({
  declarations: [
    AppComponent,
    LoginComponentComponent,
    UserRegistrationComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot([
      {
        path: 'login-component',
        component: LoginComponentComponent
      },
      {
        path: 'user-registration',
        component: UserRegistrationComponent
      },
    ])
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-24 05:23:37

错误:

没有将"exportAs“设置为"ngModel”的指令

告诉我们我们要么:

  • 忘记导入专用模块
  • 忘记向声明数组添加指令
  • 没有对元素应用指令

查看您的代码:

代码语言:javascript
复制
<input type="email" name="emailId" placeholder="Email" #email="ngModel" 
      [ngModelOptions]="{updateOn: 'change'}" />

我注意到在这个元素上没有任何属性ngModel或属性绑定[ngModel]

因此,从添加ngModel属性开始。

代码语言:javascript
复制
<input type="email" name="emailId" placeholder="Email" #email="ngModel" 
      ngModel [ngModelOptions]="{updateOn: 'change'}" />
     ^^^^^^^^^
票数 2
EN

Stack Overflow用户

发布于 2021-01-17 17:14:07

在我的例子中,使用角11,我将输入字段绑定到模板变量(即(ngModel)="UserNameSearch"),而不是组件属性,因为我与模板变量具有相同的属性名。我将组件属性更改为camel case,并使用它绑定并工作。

(ngModel)="UserNameSearch“之前的(绑定到模板变量)

(ngModel)="userNameSearch“(绑定到组件属性)之后的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49456418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档