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

为什么ngModel没有读取表单的输入?(角2/4)

郏志诚
2023-03-14

我正试图从我的角形中得到一些信息。我想在打字时看到输入。我得到这个错误:

ContactFormComponent.html:6 ERROR TypeError: Cannot read property 'name' of undefined
    at Object.View_ContactFormComponent_0._co [as updateDirectives] (ContactFormComponent.html:6)
    at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:13067)
    at checkAndUpdateView (core.es5.js:12251)
    at callViewAction (core.es5.js:12599)
    at execComponentViewsAction (core.es5.js:12531)
    at checkAndUpdateView (core.es5.js:12257)
    at callViewAction (core.es5.js:12599)
    at execComponentViewsAction (core.es5.js:12531)
    at checkAndUpdateView (core.es5.js:12257)
    at callViewAction (core.es5.js:12599)

这是我的表单html模板。我将ngModel放在表单输入中,我试图通过{{model.name}}绑定键入并查看我的输入。:

<div class="contact-wrap">

  <form #contactForm="ngForm" class="contact-form mx-auto">

    <label for="name">Name</label>
    <input type="text" id="name" [(ngModel)]="model.name" name="name"> {{model.name}}
    <label for="email">Email</label>
    <input type="text" id="email">
    <label for="message">Message</label>
    <textarea name="" id="message" cols="30" rows="4"></textarea >
    <input type="submit" class="contact-submit">

  </form>
</div>

这是我的表单组件:

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


@Component({
  selector: 'contact-form',
  templateUrl: './contact-form.component.html',
  styleUrls: ['./contact-form.component.scss']
})
export class ContactFormComponent implements OnInit {


  constructor() { }

  ngOnInit() {
  }


}

这是我app.module.ts的一部分,我在其中导入了Forms模块:

import { FormsModule } from '@angular/forms';
  imports: [
    BsDropdownModule.forRoot(),
    BrowserModule,
    CarouselModule.forRoot(),
    RouterModule.forRoot(appRoutes),
    BrowserAnimationsModule,
    Angulartics2Module.forRoot([Angulartics2GoogleAnalytics]),
    FormsModule
  ],

另外,如果你想查看所有代码,这里是 github 存储库。

共有1个答案

白禄
2023-03-14

首先呢

您不能将undefined赋值给[(ngModel)]

<input type="text" id="name" [(ngModel)]="model.name" name="name"> {{model.name}} </input>

所以你需要这样做:

<div *ngIf='model?.name'>
    <input type="text" id="name" [(ngModel)]="model.name" name="name"> {{model.name}} </input>
</div>

从组件端提供一些初始值,例如:

// From your component
model = { 'name' : '' };

// then your code will work fine
<input type="text" id="name" [(ngModel)]="model.name" name="name"> {{model.name}} </input>
 类似资料:
  • 我有一个angular应用程序,在其中我有一个表,在页面组件加载的最初,我将有一个表单行。然后当用户将在'description'字段中键入任何内容时,将添加另一行。 下面是代码 null 所以看起来是这样的 这个过程是,当加载模态时,最初文本将代替输入,当用户单击任何列时,它将成为可编辑的输入。问题是,当用户将在字段中键入任何内容时,我必须添加下一行。因此,当前行正在添加,但变量没有更新。它还为

  • 我在使用angular 4时遇到了一个问题 没有将“exportas”设置为“ngModel”的指令(“name=”fullname“type=”text“required maxlength=”30“[(ngModel)=”model.fullname“[ERROR->]#fullname=”ngModel“> app.module.ts

  • 是否可以在模板驱动的表单中使用ngFor创建输入字段,并使用类似#name=“ngmodel”的东西来在另一个标记中使用name.valid? 现在,我们有一个动态的产品列表,在一个表中有一个数量字段和一个添加到购物车按钮。我想把整个事情变成一个表单,末尾有一个add all按钮,如下所示: 但是如何为NGModel每行生成一个新的变量名呢?

  • 根据keras文件(https://keras.io/layers/convolutional/)Conv1D输出张量的形状为(batch\u size,new\u steps,filters),而输入张量的形状为(batch\u size,steps,input\u dim)。我不明白这是怎么回事,因为这意味着如果你传递一个长度为8000的1d输入,其中batch\u size=1,steps=

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

  • 问题内容: 当用户输入一个值并按时,为什么只有一个字段的a会重新加载表单,而如果其中有2个或更多字段,则为什么没有? 我写了一个简单的页面来测试这种奇怪的情况。 如果您以第二种形式输入值并按Enter键,您会看到它重新加载了通过输入值的页面,就像您调用一样。为什么?以及如何避免呢? 问题答案: 这是一个鲜为人知的“ Quirk”,已经问世了一段时间。我知道有人以各种方式解决了它。 在我看来,最简单