使用Angular 4,我有一个html模板,我想要一个有两个选项的选择框。默认情况下,应预先选择其中一个选项。
<select name="rate" #rate="ngModel" ngModel required>
<option selected value="hr">hr</option>
<option value="yr">yr</option>
</select>
我指定#rate="ngModel"
,以便我可以在条件语句中或插值{{rate.value}}
中引用模板中其他位置的值。为了实现这一点,我只需将ngModel
添加到标记即可。我没有绑定到组件类中的任何内容,因为此控件仅用于将其值提供给同一模板中的另一个控件。
在Chrome和Microsoft Edge中,该框为空,未选择默认值。如果我摆脱#rate="ngModel" ngModel
它就行了。但是,我需要引用rate.value
。
我尝试了各种ngValue,value,[ngValue],[value]的组合,但我没有尝试将值绑定到模型而我没有使用ngFor循环。 选择框上没有其他样式。
答案 0 :(得分:3)
使用ngModel时,状态在内部处理,对它的任何显式更改都会被忽略。在您的示例中,您要设置选项的选定属性,但您还为选择提供了(void)ngModel,因此Angular期望在ngModel中提供 select 的状态。
简而言之,您应该利用 ngModel 而不是设置选择的属性:
<select
name="rate"
#rate="ngModel"
[(ngModel)]="yourModelName"
required>
<option value="hr">hr</option>
<option value="yr">yr</option>
</select>
和
yourModelName: string;
constructor() {
this.yourModelName = 'hr';
}
答案 1 :(得分:3)