错误:未找到名称“ngModel”的导出

ize*_*eko 2 ngmodel angular

构建我的 angular 项目后,我收到错误:错误:未找到名称“ngModel”的导出!

我的 UI 在 docker 容器中运行

甚至不知道在哪里寻找这个。它在开发中工作正常。(ng 服务)

有任何想法吗

小智 10

我有同样的错误(尽管在开发中),事实证明我没有将FormsModule模块添加到app.module.ts文件中。见下文:

在此输入图像描述

这里还说明了更多问题及其相应的解决方案


Jer*_*ong 7

您需要在.spec.tsapp.module.ts (如果需要)文件中导入FormsModule,如下所示:

import { FormsModule } from '@angular/forms';    <------ Add this code

describe('Testing Component', () => {
  ...
  ...

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [ 
            FormsModule      <------ Add this code
        ]
    })
    .compileComponents();
  }));

  ...
  ...
Run Code Online (Sandbox Code Playgroud)


小智 6

如果没有,请在您各自的 spec.ts 文件和 app.module.ts 中导入 FormsModule

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports:[RouterTestingModule,HttpClientTestingModule,FormsModule],
      declarations: [ MyComponent ]
    })
    .compileComponents();
  }));
Run Code Online (Sandbox Code Playgroud)


Ben*_*ure 5

另一个可能的问题:如果您使用模板表单验证 当您在没有指令的#name="ngModel"表单字段上设置时[(ngModel)]

例如

<input required [value]="hero.name" (change)="setHeroName($event)" #name="ngModel" >

<div *ngIf="name.invalid && (name.dirty || name.touched)"
  class="alert alert-danger">Error</div>
Run Code Online (Sandbox Code Playgroud)

=> 错误:未找到名称“ngModel”的导出

通过更换修复

[value]="hero.name" (change)="setHeroName($event)"
Run Code Online (Sandbox Code Playgroud)

经过

[(ngModel)]="hero.name"
Run Code Online (Sandbox Code Playgroud)


ize*_*eko 1

我有一个名为 ngModel 的模板变量。不确定这会产生什么影响,但删除似乎可以修复它。