Angular 更新[(ngModel)]变量时未触发ngIf
我有一个选择选项。select有一个Angular 更新[(ngModel)]变量时未触发ngIf,angular,angular-forms,Angular,Angular Forms,我有一个选择选项。select有一个[(ngModel)]指令,将所选值保存到“rightFieldTypeId”中。然后,我会根据“rightFieldTypeId”的值显示一些元素。rightFieldTypeId的字符串插值{rightFieldTypeId}会在我选择不同选项(即1、2或3)时显示正确的值。然而,基于*ngIf指令的我的元素似乎从未评估/更改 <div class="d-flex w-50"> <select class="form-contro
[(ngModel)]
指令,将所选值保存到“rightFieldTypeId”中。然后,我会根据“rightFieldTypeId”的值显示一些元素。rightFieldTypeId的字符串插值{rightFieldTypeId}
会在我选择不同选项(即1、2或3)时显示正确的值。然而,基于*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>
{{option.name}
{{rightFieldTypeId}}
这是文本
任何关于如何基于
[(ngModel)]
HTML选项的当前值,使用*ngIf
指令显示不同元素的见解都是字符串,与严格比较(==
)进行比较不会强制类型,因此2==“2”
将是false
因此,有两种方法可以解决这个问题:
使用双相等比较-==
李>
使用+
从字符串*ngIf=“+rightFieldTypeId==2”
生成一个整数,但是如果rightFieldTypeId
无法强制为整数,则可能会出现运行时错误李>
只需与字符串进行比较,因为righfieldtypeid
将始终是字符串*ngIf=“righfieldtypeid=='2'
HTML选项
值是一个字符串
,与严格比较(==
)进行比较不会强制类型,因此2==='2'
将为false
因此,有两种方法可以解决这个问题:
使用双相等比较-==
李>
使用+
从字符串*ngIf=“+rightFieldTypeId==2”
生成一个整数,但是如果rightFieldTypeId
无法强制为整数,则可能会出现运行时错误李>
只需与字符串进行比较,因为righfieldtypeid
将始终是字符串*ngIf=“righfieldtypeid=='2'
是的,更改为比较字符串==“2”
就成功了。我有点困惑,因为我已经将option.id
和rightFieldTypeId
硬输入为typescript中的数字。很高兴知道,谢谢。对于未来的任何人,我发现这建议将标记上的[value]指令更改为[ngValue]以发出正确的数据类型,而不是在需要发出非字符串类型时找到解决方法。是的,更改为与字符串进行比较==='2'
成功了。我有点困惑,因为我已经将option.id
和rightFieldTypeId
硬输入为typescript中的数字。很高兴知道,谢谢。对于将来的任何人,我发现这建议将标记上的[value]指令更改为[ngValue],以发出正确的数据类型,而不是在需要发出非字符串类型时找到解决方法