Angular5 - 如何在mat-autocomplete中检测空或删除的字段?

时间:2018-04-19 20:10:53

标签: javascript angular-material angular5 mat-autocomplete

这是我的html,其中包含材料自动填充功能。

<ng-container *ngSwitchCase="'autocomplete'">
    <div [ngClass]="(filter.cssClass || 'col-md-4') + ' mt-2 pt-1'">
        <div class="filter-key-label">
            {{filter.columnTitle}}
        </div>
        <div class="filter-form-control d-flex flex-wrap justify-content-left">
        <mat-form-field class="full-width">
            <input type="text" matInput [formControl]="myControl" [matAutocomplete]="auto" ng-model="blah">
            <mat-autocomplete #auto="matAutocomplete">
                <mat-option *ngFor="let option of getOptionsTypeAhead(filter.key) | async" [value]="option" (onSelectionChange)="typeaheadChange($event, filter.key)">
                {{ option }}
                </mat-option>
            </mat-autocomplete>
            </mat-form-field>
        </div>
    </div>
</ng-container>

目前,我可以使用onSelectionChange检测仅选择更改,但它不会检测该字段最初是否为空,或者在选择项目然后删除它之后是否为空不选择任何内容并将焦点移出输入字段。

如何检测?

我尝试了onkeypressng-change加上ng-model(不太确定如何使用它)和change但没有任何效果。库中是否存在某些规定,或者我们是否检测到变化和输入字段值?

1 个答案:

答案 0 :(得分:2)

解决了!它一直是change

最好的部分是它不像onkeypress那样行事,只有在blur事件发生时才会触发。

我改变了我的<input>

<input type="text" matInput [formControl]="myControl" [matAutocomplete]="auto" (change)="handleEmptyInput($event, filter.key)">

控制器看起来像这样:

handleEmptyInput(event: any, key: string){
  if(event.target.value === '') {
    delete this.filtersApplied[key];
  }
}

就像我想要捕获空字段或空值的实例一样:)