为什么onSelectionChange被调用两次?

斯蒂芬·福克

我正在使用Angular Material自动完成,如下所示:

<mat-autocomplete #autocomplete="matAutocomplete" [displayWith]="displayFn" autoActiveFirstOption>
  <mat-option *ngFor="let option of filteredOptions$ | async" [value]="option" (onSelectionChange)="onSelectionChanged(option)" >
    {{displayFn(option)}}
  </mat-option>
</mat-autocomplete>    

这是处理程序:

onSelectionChanged(option) {
  console.log('Selected ' + option.name);
}

由于某种原因onSelectionChanged(),两次被调用。第二次有了旧的价值!我不明白为什么。这里发生了什么?

选择项目1,然后选择项目2,然后选择项目3:

> Selected item 1
> Selected item 2
> Selected item 1  // The unwanted call with the old value
> Selected item 3
> Selected item 2  // The unwanted call with the old value
法塔赫·穆罕默德(Fateh Mohamed)

材料具有optionSelected事件,您可以使用它

<mat-autocomplete #autocomplete="matAutocomplete" (optionSelected)="onSelectionChanged($event)" [displayWith]="displayFn" autoActiveFirstOption>
 <mat-option *ngFor="let option of filteredOptions$ | async" [value]="option" >
    {{displayFn(option)}}
 </mat-option>
</mat-autocomplete>  

并以此方式获得价值

onSelectionChanged(event) {
   console.log(event.option.value);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章