我有一个选择下拉列表的代码:
<select id="UnitOfMeasurementId" name="UnitOfMeasurementId" [(ngModel)]="UnitOfMeasurementId">
<option *ngFor="let unit of UnitOfMeasurements" [ngValue]="unit.Value" [selected]="unit.Selected">{{unit.Text}}</option>
</select>
UnitOfMeasurements
数组中的每个项目都如下所示:
Selected: false
Text: "lb"
Value: "1"
或者这个:
Selected: true
Text: "kg"
Value: "3"
[(ngModel)]="UnitOfMeasurementId"
包含应选择的项的值。在此特定示例中,该值为3,因此应选择第3个项目。果然,当我检查元素时,它会在正确的项目上显示ng-reflect-selected="true"
,但实际上没有选择任何内容。如何才能让列表中的正确项目实际动态选择,而不是仅添加ng-reflect-selected="true"
属性?
答案 0 :(得分:5)
import UIKit
class NMTextField: UITextField {
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(UIResponderStandardEditActions.paste(_:)) {
return false
}
return super.canPerformAction(action, withSender: sender)
}
}
绑定将属性值设置为传递的值。因此,如果您传递attr.selected
,它将设置false
,这不是您想要获得的(因为它根据HTML规范实际选择了元素)。要删除属性,您必须传递selected="false"
。
使用:
null
答案 1 :(得分:4)
不要将selected
属性与ngModel
和ngValue
一起使用,而是将所选项目的值分配给UnitOfMeasurementId
。
与*ngFor
中使用的实例相同实例非常重要。具有相同属性和相同值的其他一些对象实例将无法工作。