angular - 如何检测用户何时清除 mat-autocomplete 的选择?

标签 angular angular-material

根据自动完成选择的值,我需要更新一些其他表单字段。

因此,我添加了 optionSelected 事件处理程序:

<mat-autocomplete (optionSelected)="onOptionSelected($event)">
    <mat-option *ngFor="let item of items"
                [value]="item">
        <span>{{item}}</span>
    </mat-option>
</mat-autocomplete>

用户应该能够清除选择,在这种情况下我也需要重置其他字段。

问题是当 mat-autocomplete 被用户清空时,optionSelected 不会被触发。

如何捕获自动完成已清除事件?

最佳答案

您可以做的是为 mat-autocomplete 创建一个 FormControl

myControl = new FormControl();

然后将其与 HTML 中的 mat-autocomplete 相关联

<mat-autocomplete [formControl]="myControl" (optionSelected)="onOptionSelected($event)">
    <mat-option *ngFor="let item of items"
                [value]="item">
        <span>{{item}}</span>
    </mat-option>
</mat-autocomplete>

最后,在您的组件中监听值更改并请求新数据,然后您将其设置为选项

this.myControl.valueChanges
  .pipe(
    debounceTime(500),
    distinctUntilChanged(),
    takeUntil(this.ngUnsubscribe) // optional but recommended 
  )
  .subscribe(searchPhrase => check if empty);

关于angular - 如何检测用户何时清除 mat-autocomplete 的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60865965/

相关文章:

angular - Angular 4 中的循环依赖

angular - Ionic 4 beta 需要很长时间才能编译

javascript - 定义具有内部内容的自定义卡片组件

javascript - Material Icon 在网站首次加载时显示为名称

javascript - 当我使用 Angular Material 和一些自定义代码时如何解决 Angular 应用程序中的 $event 问题

javascript - Angular 4 中数组列表的重复

css - Angular Material 台的高度不低于某个最小高度

Angular JWT Token 添加到 lazyUpdate 而不是 HttpHeaders 中的 header

angular - "export ' ɵɵ注入(inject) ' was not found in ' @angular/core'

订阅的 Angular 返回值