我试图在选择新值后,调用eventChange()函数并将所选值恢复为默认值。但是会发生什么:ngModel值更新,但选定的值保持不变。我该怎么做选择的值和ngModel值是一样的?
HTML文件
<select [(ngModel)]="selectedValue"
(change)="eventChange()"
>
<option [disabled]="true"
[ngValue]="-1">
Choose an option
</option>
<option *ngFor="let item of myList index as i"
[ngValue]="i"
>
{{item.name}}
</option>
</select>
组件文件中的功能
selectedValue = -1; //works //Option in select is changed
eventChange(){
this.selectedValue= -1; //don't work
//Function is called,
//Value changes
//But selected Option in Select doesn't change
}
注释: 在运行网页(刷新)时,正确设置select的第一个值,如果在组件文件中我将变量 selectedValue 设置为其他索引,则选择其他值,但它仅在运行时有效,但在函数中不起作用)
我也发现了这个问题Angularjs: select not updating when ng-model is updated 但是这里是对AngularJS的回答,使用ng-options而不是ng-repeat,在角度4中我只发现* ngFor ...
更新: 澄清以防万一:函数被调用,但我希望通过javascript更改选择的选项。我通过更改ngModel值来尝试这一点,但即使ngModel值为cahnged,选择的选项也不会改变。
答案 0 :(得分:1)
使用 ngModelChange ,您不需要 *targ++ = *arg++;
[ngValue]