为什么我不能从NgForm获取表单控件

安东尼奥

我有简单的表格

<form novalidate #f="ngForm">
  <mat-form-field class="example-full-width">
    <input matInput placeholder="Favorite food" name="myname" required [(ngModel)]="comment">
    <mat-error>Is required lol</mat-error>
  </mat-form-field>

  <mat-form-field class="example-full-width">
    <input matInput placeholder="Favorite food" required name="some">
  </mat-form-field>
</form>

和组件为

export class InputOverviewExample {
  comment = null;
  @ViewChild('f')
  form: NgForm


  ngOnInit() {
    console.log(this.form.controls);
    console.log(Object.keys(this.form.controls));

    console.log(this.form.controls.myname);
    console.log(this.form.controls['myname']);
  }
}

问题是,控制台输出为:

{}
​
    myname: Object { pristine: true, touched: false, status: "INVALID", … }
        Array []
        undefined

那么,为什么我不能按名称访问表单控件,为什么Object.keys在控制台说form.controls??中有一些键的同时返回空数组这是一个游乐场,所以请忽略重复的表单输入等。https://stackblitz.com/edit/angular-urqles

斯拉万

您错过了onInit实现,

首先添加InputOverviewExample implements OnInit以正确实现和使用该ngOnInit功能。

其次,由于Reactive表单是sync表单,因此console.log在获取表单initialized之前和form control添加表单之前运行

另外,表单控制一般实现使用form builderin构造函数,因为您尚未意识到这一点,因此您已经遇到了这一问题,因此以下代码将为您解决

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

/**
 * @title Basic Inputs
 */
@Component({
  selector: 'input-overview-example',
  styleUrls: ['input-overview-example.css'],
  templateUrl: 'input-overview-example.html',
})
export class InputOverviewExample implements OnInit {
  comment = null;
  @ViewChild('f')
  form: NgForm


  ngOnInit() {
    setTimeout(() => {
      console.log(this.form.controls);
    console.log(typeof this.form.controls);
    console.log(Object.keys(this.form.controls));

    console.log(this.form.controls.myname);
    console.log(this.form.controls['myname']);
    })

  }
}

这是工作代码的演示

附:

对于您的问题,模板驱动的表单可以在后台的可响应表单API上运行吗?答案是肯定的

这里是解释:

NgModel伪指令创建FormControl实例以管理模板表单控件,并且name属性告诉NgModel伪指令将哪个FormControl存储在父FormGroup中的密钥

<input name="foo" ngModel>

等于:

let model = new FormGroup({
  "foo": new FormControl()
});

您面临的主要问题是控制台行为,

Console 首先执行,然后再分配值,因此在控制台执行后分配值时,将无法访问任何方法。

这是@yurzui给出的一个很好的例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的函数不能从 ngForm 收集用户输入?

来自分类Dev

为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

来自分类Dev

为什么我不能从GraphRequest获取用户的名字?

来自分类Dev

为什么我不能从 class() 获取变量

来自分类Dev

为什么不能从beanClass获取注释?

来自分类Dev

为什么我不能从json Retrofit中获取特殊字段?

来自分类Dev

为什么我不能从这个结构中获取文章数据?

来自分类Dev

为什么我们不能从Java中的RequestBody获取文件数据?

来自分类Dev

为什么我不能从集合中获取项目并将其存储在变量中?

来自分类Dev

为什么我不能从获取身份验证令牌错误的模块中模拟功能?

来自分类Dev

为什么我不能从 PDO 关联数组中获取信息以进行回显?

来自分类Dev

为什么我不能从我的SSD引导?

来自分类Dev

为什么我不能从远程访问我的postgres?

来自分类Dev

为什么不能从函数中获取Pandas细胞的类型?

来自分类Dev

为什么我既不能从ppa存储库也不能从.deb文件安装audacity?

来自分类Dev

为什么我不能从函数返回Vec <&str>?

来自分类Dev

为什么我不能从该表中删除记录?

来自分类Dev

为什么我不能从Angular调用ajax调用

来自分类Dev

为什么我不能从泛型参数访问属性?

来自分类Java

为什么我们不能从逆变型再现

来自分类Dev

为什么我不能从便携式HD启动?

来自分类Java

为什么我不能从void函数返回void

来自分类Dev

Swift:为什么我不能从覆盖init调用方法?

来自分类Dev

为什么我不能从mplfinance导入Candlestick_ohlc

来自分类Python

为什么我不能从异步函数内部“产生”?

来自分类Dev

为什么我不能从 Pydantic 导入 BaseModel?

来自分类Dev

为什么我不能从 Future 返回 None

来自分类Dev

为什么我不能从远程分支中拉出?

来自分类Dev

为什么我不能从图像阵列创建图像

Related 相关文章

  1. 1

    为什么我的函数不能从 ngForm 收集用户输入?

  2. 2

    为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

  3. 3

    为什么我不能从GraphRequest获取用户的名字?

  4. 4

    为什么我不能从 class() 获取变量

  5. 5

    为什么不能从beanClass获取注释?

  6. 6

    为什么我不能从json Retrofit中获取特殊字段?

  7. 7

    为什么我不能从这个结构中获取文章数据?

  8. 8

    为什么我们不能从Java中的RequestBody获取文件数据?

  9. 9

    为什么我不能从集合中获取项目并将其存储在变量中?

  10. 10

    为什么我不能从获取身份验证令牌错误的模块中模拟功能?

  11. 11

    为什么我不能从 PDO 关联数组中获取信息以进行回显?

  12. 12

    为什么我不能从我的SSD引导?

  13. 13

    为什么我不能从远程访问我的postgres?

  14. 14

    为什么不能从函数中获取Pandas细胞的类型?

  15. 15

    为什么我既不能从ppa存储库也不能从.deb文件安装audacity?

  16. 16

    为什么我不能从函数返回Vec <&str>?

  17. 17

    为什么我不能从该表中删除记录?

  18. 18

    为什么我不能从Angular调用ajax调用

  19. 19

    为什么我不能从泛型参数访问属性?

  20. 20

    为什么我们不能从逆变型再现

  21. 21

    为什么我不能从便携式HD启动?

  22. 22

    为什么我不能从void函数返回void

  23. 23

    Swift:为什么我不能从覆盖init调用方法?

  24. 24

    为什么我不能从mplfinance导入Candlestick_ohlc

  25. 25

    为什么我不能从异步函数内部“产生”?

  26. 26

    为什么我不能从 Pydantic 导入 BaseModel?

  27. 27

    为什么我不能从 Future 返回 None

  28. 28

    为什么我不能从远程分支中拉出?

  29. 29

    为什么我不能从图像阵列创建图像

热门标签

归档