Angular 2:尽管选择了“selected”属性,但选择下拉列表不选择选项

时间:2016-11-21 22:39:03

标签: angular ngfor angular2-ngmodel

我有一个选择下拉列表的代码:

<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"属性?

2 个答案:

答案 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属性与ngModelngValue一起使用,而是将所选项目的值分配给UnitOfMeasurementId

*ngFor中使用的实例相同实例非常重要。具有相同属性和相同值的其他一些对象实例将无法工作。