You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何让禁用的FormControl值出现在this.form.value中?

解决Angular禁用FormControl值不显示在form.value中的问题

Angular默认会排除禁用状态的表单控件值,所以你用this.form.value拿不到禁用的newsletter值。有两种常用方法可以解决这个问题:

方法一:使用getRawValue()方法

Angular的FormGroup/FormControl提供了getRawValue()方法,它会返回所有控件的值,不管控件是否处于禁用状态。直接替换原来的this.form.value即可:

// 原来的写法,无法获取禁用控件值
const formValue = this.form.value;

// 修改后的写法,可获取所有控件值(包括禁用状态)
const formValue = this.form.getRawValue();

这样即使newsletter是禁用状态,它的true值也会被包含在返回的对象里。

方法二:用readonly替代disabled

如果你不需要严格的禁用状态(只是不想让用户修改控件值),可以把控件设为只读,同时保持启用状态,这样值就会正常出现在this.form.value中:

  1. 初始化FormControl时不设置禁用:
newsletter: new FormControl(true),
  1. 在模板的复选框上添加readonly属性:
<input type="checkbox" formControlName="newsletter" [readonly]="true">

这种方式下,用户无法修改复选框状态,但控件始终处于启用状态,值会被包含在form.value里。


内容的提问来源于stack exchange,提问作者xRay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:57:03