FormControl在Angular 2中返回空值

Posted

技术标签:

【中文标题】FormControl在Angular 2中返回空值【英文标题】:FormControl returning empty value in Angular 2 【发布时间】:2017-12-01 09:55:26 【问题描述】:

我正在使用表格

<form [formGroup]="form">
    <input type="text" value=userDetails.first_name formControlName = "firstName">
    <button type="submit" data-action="save" (click)="onSubmit(form.value)">
</form>

这里userDetails.first_name 的值是汤姆。它在文本框内的 UI 上可见;但是当我提交表单时form.firstName 给了我空值。

【问题讨论】:

【参考方案1】:

html

<form [formGroup]="form">
    <input type="text" formControlName="firstName">
    <button type="submit" data-action="save" (click)="onSubmit(form.value)">
</form>

组件

你可以这样设置值

this.form.patchValue(firstName:this.userDetails.first_name);

确保将表单组的实例创建到组件中

【讨论】:

【参考方案2】:

声明表单组:

private userForm: FormGroup;

像这样初始化用户表单:

  userForm = form.group(
          firstName:  [firstName, [Validators.required]]
        );

像这样在 html 中声明你的表单:

 <form class="example-form " [formGroup]="userForm"
                  (ngSubmit)="onSubmit(userForm)">
    <input type="text" value=userDetails.firstName formControlName = 
      "firstName">
    <button type="submit" data-action="save"/>
 </form>

让你的 onSubmit() 方法像这样:

onSubmit(formValue, valid:  formValue: UserDetails, valid: boolean ) 
    const firstName= value.firstName;
 

【讨论】:

【参考方案3】:

要获取值,您应该检查 form.value.firstName 而不是 form.firstName

要更好地了解表单的结构,请在提交表单时使用console.log(this.form)

【讨论】:

我已经完成了 console.log ;仍然返回空值 好吧,如果console.log(this.form) 返回一个空值,可能还有其他问题。您是否也可以使用组件部分更新您的代码,而不仅仅是模板? 这是我的 表单初始化 this.form = new FormGroup( firstname : new FormControl('',Validators.compose([Validators.required])) ); & 这是我的 onSubmit 方法 onSubmit = function (user) console.log(user);

以上是关于FormControl在Angular 2中返回空值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 2.0 中使用 formControl 访问 Native HTML Input 元素

Angular 2 FormControl.reset() 不起作用,但 .resetForm() 起作用(但打字稿错误)

Angular 2 - 订阅 FormControl 的 valueChanges 是不是需要取消订阅?

Angular Js 2 - 无法绑定到“formControl”,因为它不是“输入”的已知属性

Angular 7 - 使用 FormControl 字段启用提交表单

Angular2 - FormControl 验证模糊