javascript - 检查Angular HTML中的布尔真值
问题描述
我正在尝试检查 Angular HTML 中的布尔值真实性,并得到一个奇怪的结果。在阅读了这篇 SO 帖子后,我想我明白发生了什么。我希望能够使用 === 运算符,但正如我下面的最后一个示例所示,它不会返回正确的结果。
我上面的代码的输出状态:
未选择任何内容,但默认值为 false
新建:假
双 eq isCreateNew==false: true
字符串 isCreateNew=='false': false <----- 意外
obj isCreateNew===假:真
设置为 true 创建新:true
双 eq isCreateNew==false: 假
字符串 isCreateNew=='false': false
obj isCreateNew===假:假
设置为假
新建:假
双 eq isCreateNew==false: false <----- 意外
字符串 isCreateNew=='false': true
obj isCreateNew===false: false <----- 意外
解决方案
根据类型转换规则,字符串'false'
不会转换为布尔值false
。这意味着
false == 'false' // It is indeed false
所以这不应该是意外的,这是预期的结果。
现在你可能会问为什么true
当你设置isCreateNew
为false
. 问题实际上出在您的代码中。您的单选按钮没有将值设置为布尔值,false
或者true
将其设置为字符串。要将其设置为布尔值,您需要使用方括号。
<mat-radio-button class="example-radio-button" [value]="true">set true</mat-radio-button>
<mat-radio-button class="example-radio-button" [value]="false">set false</mat-radio-button>
另一种判断您的价值未正确设置的方法是由您的ngModel
. 如果您在组件中设置isCreateNew
为false
,则应设置检查false
单选按钮。由于您的值是字符串,因此不会发生这种情况。添加方括号后,您可以看到false
单选按钮被选中。
推荐阅读
- r - 如何计算一个单词连续出现的次数
- python - 自定义模块名称被 Python 语法拒绝
- javascript - 来自 ajax 插入数据的 Highcharts 迷你图
- c# - 无法解析“Serilog.ILogger”类型的服务:“AspNetCore.Serilog.RequestLoggingMiddleware”
- python - 在 Python 中使用 Requests 登录
- python - 如何使用 pandas 创建一个新列来识别时间字段中的近距离?
- c - strtol 隐式转换
- calculus - 你能给我解释一下如何计算偏导数吗?
- c# - 如何在通用存储库中将所有实体框架主列重命名为 Id?
- c# - 例外是关于在 next() 之后不修改响应的规则的例外吗?