布尔属性的单选按钮

Posted

技术标签:

【中文标题】布尔属性的单选按钮【英文标题】:Radio button for boolean property 【发布时间】:2016-11-01 00:51:55 【问题描述】:

我的对象document 中有一个简单的布尔属性valid 并且需要将其绑定到无线电输入。

这是我目前所拥有的:

<input type="radio" name="valid" id="validTrue" (click)="document.valid = true" [checked]="document.valid"/>
<input type="radio" name="valid" id="validFalse" (click)="document.valid = false" [checked]="!document.valid"/>

至少在单击时设置属性有效,但无线电输入不显示其状态。查看浏览器的开发者控制台,我发现设置了一个属性 ng-reflect-checked,但它似乎对 html 单选输入没有影响。

我做错了什么? 有没有人有一个有效的“angular2-boolean-radio-input”sn-p?

【问题讨论】:

您使用的是哪个 Angular 2 版本 新的 RC.3 表单或已弃用的表单? 对不起...我在 rc3 上使用新表格。 【参考方案1】:

在新的表单模块中,这可能会满足您的需求

  <input type="radio" name="food" [(ngModel)]="document.valid" [value]="true">
  <input type="radio" name="food" [(ngModel)]="document.valid" [value]="false">

另见design doc for the new forms module

【讨论】:

你说得对。就是这么简单。我想我已经尝试过了,但忘记将 vale 属性放在方括号中。 如果没有[],你会得到truefalse作为字符串,我猜这两个值都是JS/TS中的true(不确定,我用得不多) 我尝试过这样做,但我的单选按钮未选中。我需要一个设置为 true 的值默认加载为选中状态,而另一个保持未选中状态。我怎样才能激活这种行为? 使用[value]="false" 可以将布尔文字false 绑定到元素的value 属性和指令/组件的@Input() value:boolean;。如果这样的属性或输入不存在,则会引发异常。使用value="false" 可以将字符串"false" 绑定到value 属性。如果 HTML 元素支持这样的属性,它可能会将其转换为布尔值并将值分配给其属性。如果指令/组件托管在该元素上,则字符串将分配给它value 输入。输入得到一个 string 传递的值。 @DarionN 如果您使用value,则使用普通属性绑定,它始终将值作为字符串传递。使用[value],它成为一个属性绑定,将所有值作为原始类型传递。对于[]"..." 中的部分被解释为代码,true 作为布尔值传递,而对于value="true""true" 作为字符串传递。在 JS 中"false" 也是真实的,所以使用字符串值这是行不通的。

以上是关于布尔属性的单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Node + Express + Mongoose 中的单选按钮传递布尔值?

如何从 PHP 中的单选按钮发送值属性 [关闭]

如何使单选按钮返回布尔值真/假而不是开/关

使用 ng-model 进行 ng-checked 的单选按钮

MFC的单选按钮、复选框问题

RadioButton控件用法技巧