0

我试图在选择新值后做到这一点,我调用 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
}

评论:在运行网页时(刷新)选择的第一个值设置正确,如果在组件文件中我将变量selectedValue设置为其他索引,则选择其他值,但它仅适用于运行,但不适用于功能)

我还发现了这个问题Angularjs: select not updates when ng-model is updated 但是这里是 AngularJS 的答案,用于使用 ng-options,而不是 ng-repeat,在 Angular 4 中我发现只有 *ngFor...

更新:澄清以防万一:正在调用函数,但我想通过javascript更改选定的选项。我通过更改 ngModel 值来尝试此操作,但即使 ngModel 值被更改,所选选项也不会改变。

4

1 回答 1

2

使用ngModelChange你不需要[ngValue]

<select [(ngModel)]="selectedValue"
       (ngModelChange)="eventChange()"
于 2018-02-06T01:30:38.180 回答