【问题标题】:Unable to get value of selected mat radio button with *ngFor Angular 11无法使用 *ngFor Angular 11 获取所选垫单选按钮的值
【发布时间】:2022-01-06 13:33:26
【问题描述】:

模板:

<form [formgroup]="radioForm">
<mat-radio-group>
<mat-radio-button *ngFor="let list of lists" formControlName="list" value="list.num">{{list.name}}
</mat-radio-button>
</mat-radio-group>
</form>

TS 文件:

radioForm: FormGroup = new FormGroup({
   list: new FormControl(),
});

list: List[]=[];
num: any;

ngOninit(){
  this.list = this.template.lists;
}

控制台中的列表数组包含三个值...名称、颜色和编号。

在选择单选按钮时,我想要列表中的 num 值。我该如何实现?

【问题讨论】:

  • 在此处使用方括号[value]="list.num"
  • 当我这样做时,我将 num 值设为 null .. this.num = this.radioForm.controls.list.value

标签: angular forms angular-material radio-button


【解决方案1】:

有 2 个错误需要修复:

value="list.num" 表示单选按钮的值是一个名为“list.num”的字符串。 您需要添加括号以将属性与[value]="list.num"绑定

formControlName 指令必须用于mat-radio-group 标记,而不是每个mat-radio-button 标记。

【讨论】:

  • 我按照你的建议做了,但是当我这样做时,我仍然得到 num 值为 null .. this.num = this.radioForm.controls.list.value in ngOninit
  • 通过在 ngOnInit 上执行此操作,它发生在与浏览器进行任何交互之前,因此尚未选择单选按钮
  • 那么我怎么知道选择了什么.. 我应该在外面创建一个方法然后在 ngOninit 中调用它吗?
  • 在用户提交带有完成值的表单时,您调用相关函数来做任何您想做的事情。如果是为您获取直接更改,您可以在 ngOnInit 中使用此代码示例来记录表单更改:this.radioForm.valueChanges.subscribe(console.log)
猜你喜欢
  • 1970-01-01
  • 2019-10-05
  • 2020-07-14
  • 2012-06-27
  • 2016-09-13
  • 1970-01-01
  • 2015-08-19
  • 2013-06-14
  • 1970-01-01
相关资源
最近更新 更多