当前位置: 首页 > 知识库问答 >
问题:

ngModel不在Angular4中工作

翟越
2023-03-14

我从官方网站学习Angular 4,我通过ngModel学习了双向数据绑定部分。但是,只要我将[(ngModel)]添加到组件模板中,我的应用程序就会停止工作,即使FormsModule已导入模块中。ts文件。组件未加载
我正在使用Visual Studio代码<这是我的应用程序。组成部分ts

import { Component } from '@angular/core';

    export class Hero {
      id: number;
      name: string;
    }



    @Component({
      selector: 'app',
      template: `
      <h1>{{ title }}</h1>
      <h2>{{hero.name}} details!</h2>
      <div><label>Id:</label> {{hero.id}} </div>
      <div>name:<input [(ngModel)]="hero.name" type="text"></div>
      `,
      styles:[`
        .selected{
          transition: padding 0.3s;
          color: mediumseagreen;
        }
      `]
    })

    export class AppComponent {
      title = 'Tour Of Heroes';

     hero:Hero = {
       id:1,
       name:"Mr. Invisible"
     };
    }  

这是一个应用程序。单元ts

import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

    import { AppComponent, Hero } from './app.component';

    @NgModule({
      declarations: [
        AppComponent,
        FormsModule
      ],
      imports: [
        BrowserModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { } 

AppComponent没有加载,只是显示

加载。。。

共有3个答案

阎星华
2023-03-14

除了模块声明的imports部分所需的FormsModule之外,您还必须使用form标记或ngForm指令来启用ngModel功能。

如果没有,您也可以使用独立控件来使用ngModel,如下所示:

 <input [(ngModel)]="variable" #ctrl="ngModel" >

资料来源:角度文件

沈骞仕
2023-03-14

正如其他人指出的,导入表单模块(例如,在app.module.ts文件中)非常重要在这个具体问题中,它在导入部分缺失。

但是我添加这个答案是为了警告你一些其他的事情,我不时会遇到这些事情。

如果您只是单独使用ngModel,而没有在某个地方使用表单,则不必为输入指定name

<input ... [(ngModel)]="model.something"`>

但是当您在表单中使用它时,name属性将成为必需的!

<form>
  <input ... name="something" [(ngModel)]="model.something"`>
</form>

它实际上在文档中:

在标记中使用ngModel时,还需要提供name属性,以便控件可以在父窗体中以该名称注册。

如果你错过了它,它将不会显示任何错误,它只是不会工作。

施玉宸
2023-03-14
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

    import { AppComponent, Hero } from './app.component';

    @NgModule({
      declarations: [
        AppComponent

      ],
      imports: [
        BrowserModule,
        FormsModule  // forms module should be in imports not in declarations
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { } 
 类似资料:
  • 我需要在我的Jhipster应用程序(4.8.2)的多个站点中共享一个组件,我已经将我的组件添加到文件:: 看起来一切都很顺利,但是那个组件内的NgModel指令已经停止工作了。 如果它是value,我不带指令它读起来很好,问题是当我在带有NgModel指令的“input”中使用它时 有人能帮我解决这个问题吗? 谢谢.

  • 在ngFor循环中使用ngModel有一个问题。我在做电子商务应用程序,我想用数量来获得输入的价值,但每个ngModel都有相同的名称,所以它一直更新所有的输入,像这样:Img和下面是我的页面代码:

  • 问题内容: 我已经安装了Jquery和Jquery-ui 这些文件位于node_modules目录中。我有一个声明Jquery的组件 我的jquery函数工作正常,但jquery-ui函数却不能。 因此,显然我对jquery-ui的包含是不正确的。我尝试在我的.angular-cli.json页面中包含许多不同的内容,但均未成功。 我在.angular-cli文件中尝试过的事情: 我尝试直接导入到

  • Dockerized Angular 4 App (with Angular CLI) Build docker image $ docker build -t myapp . Run the container $ docker run -d -p 8080:80 myapp The app will be available at http://localhost:8080 You can e

  • 我试图让ESLint让我使用对象的Rest/传播。尽管我尽了最大努力,我还是得到了这个错误: 当我悬停在椭圆上时(<代码>...)用红色弯弯曲曲。 我的看起来像这样: 我确信prefs正在被阅读,因为规则、插件和样式指南正在按预期工作。 要启用对象rest/spread,是这里的关键(哈哈),它似乎对其他人有用。然而,它拒绝为我工作。我不知所措 更新:我使用的是Visual Studio代码v1.

  • 问题内容: 我有以下ckEditor指令。在下面的示例中,我看到了两个有关如何在编辑器中设置数据的示例的两种变体: 有人可以告诉我有什么区别: 而我应该使用。我看了一下角度文档,上面写着: 我不知道作者在文档中写这个是什么意思:-( 问题答案: 您正在寻找正确的文档,但可能只是您有些困惑。该和有一个明显的区别。就是这个: 如前所述: 视图中的实际字符串 (或对象) 值。 模型中控件绑定到的值。 我