我在尝试根据typescript中的值预先选择Angular下拉项时遇到了一些问题。以下是我的typescript:
transferFeeTblCombBxRowIndex : any;
if (arborSvcTy.trim() === '501') {
this.transferFeeTblCombBxRowIndex = '1';
} else {
console.log("COME IN ELSE");
this.transferFeeTblCombBxRowIndex = '0';
}
字符串
在我的html中,我尝试使用双向绑定:
<td>
<select class="form-control" name="transferFeeTblCombBxRow" [(ngModel)]="transferFeeTblCombBxRow" [disabled]="isTransferFeeTblCombBxRowDisabled">
<option disabled value="transferFeeTblCombBxRowIndex == '0'">-- Please Select --</option>
<option value="transferFeeTblCombBxRowIndex == '1'">Charged</option>
<option value="transferFeeTblCombBxRowIndex == '2'">Waived</option>
</select>
</td>
型
我设法从控制台打印出"COME IN ELSE"
。但是,下拉列表在第一项处未被预先选择。
有什么想法吗?谢谢!
2条答案
按热度按时间dojqjjoe1#
这个
transferFeeTblCombBxRowIndex == '0'
条件将返回布尔变量 (true/flase),而不是select的value
。字符串
技术支持:
型
StackBlitz
yhuiod9q2#
您对
select
下拉列表的预期似乎不正确。在select
下拉列表中,每个option
都有一个唯一的value
。这是必要的,这样您就可以从下拉菜单中的选项进行区分。当您选取其中一个选项时,该option
的value
会设定为您的select
下拉式清单的value
。我们使用ngModel
绑定到select
下拉列表的value
。“您的模板表达式会将
option
值设置为true
或false
。您需要将模板表达式中的option
值更改为实际值本身。您还将错误的变量设置为ngModel
。在您的元件中,您设定的是transferFeeTblCombBxRowIndex
,而使用的是transferFeeTblCombBxRow
做为ngModel
。这是您的模板应该看起来的样子。
字符串
顺便说一句,即使你想计算一个模板表达式,你也必须使用
[value]
或者用{{...}}
来代替(比如[value]="transferFeeTblCombBxRowIndex == '0'"
或者value="{{transferFeeTblCombBxRowIndex == '0'}}"
)(参见文档)。