angular - 表单控件名称 : Cannot read property 'value' of undefined

标签 angular angular-reactive-forms

我目前正在尝试完成 Angular 基础知识指南,并且目前在响应式(Reactive)表单方面遇到一些问题。

我的 HTML 中的第 4 行抛出此错误: 错误类型错误:无法读取未定义的属性“值”

组件.html:

<form [formGroup]="loginForm">
  <label>
    Username:
    <input type="text" formControlName="name">
  </label>
  <p>{{name.value}}</p>
  <label>
    adress:
    <input type="text" formControlName="adress">
  </label>
</form>

组件.ts:

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  constructor(
    private formbuilder : FormBuilder
  ) { }

  loginForm :FormGroup;
  username : FormControl;
  adress : FormControl;


  ngOnInit() {
    this.username = new FormControl('test',Validators.required);
    this.adress = new FormControl('something',Validators.required);
    this.loginForm = this.formbuilder.group({
      name : this.username,
      adress : this.adress
    })
  }
}

我尝试过使用表单构建器的各种变体,但我还没有能够使其工作。

数据显示在我在 HTML 文件中的输入控件中,所以我认为 html 可能在脚本之前完成加载,或者相反,这会导致一些未定义的错误。但情况似乎并非如此,因为当我尝试编辑输入区域中的文本时也会引发错误。

老实说,我不知道为什么会发生这种情况,而且我进行了很多谷歌搜索,发现有人有类似的问题,我尝试过他们的解决方案,但它似乎对我不起作用。

所以请帮忙,提前致谢。

编辑:所以显然问题并不像控制台所说的那样出现在第 4 行,而是出现在第 6 行,我在其中尝试访问控件的值。

最佳答案

嗨@jAnderson,您使用了错误的方法来获取 formControl 的值。您必须在值之前添加 formGroup 名称。像这样的东西

 <p>{{loginForm.value.name}}</p>

这肯定会对你有帮助。

关于angular - 表单控件名称 : Cannot read property 'value' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099235/

相关文章:

angular - FormControl valueChanges.subscribe 与 keyup

css - ionic 应用程序文本与聊天应用程序一起离开 View 屏幕

javascript - 在动态组件初始化期间应用指令

javascript - Validators.pattern 未显示手机号码错误

Angular react 形式,添加和删除字段?

angular - 在 ngFor 中有一个 mat-radio-button 与 Reactive Forms 一起使用

css - Angular 中的可重用面板容器模板架构

html - Bootstrap,选择选项占位符仅在首次提交后显示

javascript - 无法使用此嵌套对象数组创建响应式(Reactive)表单

angular6 - ng-select 多选复选框,具有角度 6 的 react 形式