Angular5 - 如何检测 mat-autocomplete 中的空字段或已删除字段?
Angular5 - How to detect empty or deleted field in mat-autocomplete?
这是我的 html,其中包含 material 自动完成功能。
<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
只能检测到select离子变化,但它无法检测该字段最初是否为空或在有后何时为空select编辑了一个项目然后将其删除,我没有select任何东西并将焦点移出输入字段。
如何检测?
我尝试了 onkeypress
、ng-change
和 ng-model
(不太确定如何使用)和 change
,但没有任何效果。图书馆是否已经提供了一些规定,或者我们是否检测到更改和输入字段值?
解决了!一直是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];
}
}
就像我想捕获空字段或空白值的实例一样:)
这是我的 html,其中包含 material 自动完成功能。
<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
只能检测到select离子变化,但它无法检测该字段最初是否为空或在有后何时为空select编辑了一个项目然后将其删除,我没有select任何东西并将焦点移出输入字段。
如何检测?
我尝试了 onkeypress
、ng-change
和 ng-model
(不太确定如何使用)和 change
,但没有任何效果。图书馆是否已经提供了一些规定,或者我们是否检测到更改和输入字段值?
解决了!一直是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];
}
}
就像我想捕获空字段或空白值的实例一样:)