angular - ngIf 不会在更新 [(ngModel)] 变量时触发
问题描述
我有一个带有选项的选择。选择具有[(ngModel)]
将所选值保存到“rightFieldTypeId”的指令。然后,我想根据“rightFieldTypeId”的值显示元素。{{ rightFieldTypeId }}
当我选择不同的选项(即 1、2 或 3)时,rightFieldTypeId 的字符串插值显示正确的值。但是,我基于*ngIf
指令的元素似乎从未评估/更改。
<div class="d-flex w-50">
<select class="form-control w-25 mr-4" [(ngModel)]="rightFieldTypeId">
<option *ngFor="let option of fieldTypeOptions" [value]="option.id">
{{ option.name }}
</option>
</select>
{{ rightFieldTypeId }}
<span *ngIf="rightFieldTypeId === 2">This is Text</span>
<edit-spec-wizard-operations-builder *ngIf="rightFieldTypeId === 3"></edit-spec-wizard-operations-builder>
</div>
*ngIf
任何关于如何使用基于当前值的指令来显示不同元素的见解[(ngModel)]
解决方案
HTMLoption
值是 astring
并且与严格比较 ( ===
) 进行比较不会强制类型,所以2 === '2'
将是false
.
所以有几种方法可以使用它:
- 使用双重相等比较 -
==
; - 用于
+
从字符串生成整数*ngIf="+rightFieldTypeId === 2"
,但如果rightFieldTypeId
不能强制转换为整数,则可能会出现运行时错误; - 只需与字符串进行比较,因为
rightFieldTypeId
将始终是字符串*ngIf="rightFieldTypeId === '2'"
推荐阅读
- atom-beautify - 安装“atom-beautify@0.33.4”失败
- javascript - 如何在 React 函数之外持久化变量?
- laravel - Bootstrap bootstrap.bundle.js 不适用于 Laravel 项目上的 Button Dropdown
- javascript - 正则表达式支持免费电话号码以及阿联酋号码
- javascript - JavaScript 递归 setTimeout() 几个小时后无法正常工作
- r - 从R中的GPS坐标列表创建最短路径
- angular - 角删除http请求
- docker-container - Connect local SQL Server database from the containerized Asp.net Core Application
- django - 如何为多个 Slug 编写 URL
- javascript - 应用程序组件的渲染渲染 hello 组件或者它到底做了什么?是 jsx 吗?