10 votes

Angular5 - Comment détecter un champ vide ou supprimé dans mat-autocomplete ?

Voici mon html qui contient l'autocomplétion du matériel.

<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>

Actuellement, je suis en mesure de détecter seule la sélection change en utilisant onSelectionChange mais il ne détecte pas si le champ est vide au départ ou si, après avoir sélectionné un élément et l'avoir supprimé, je ne sélectionne plus rien et que je déplace le focus hors du champ de saisie.

Comment le détecter ?

J'ai essayé onkeypress , ng-change couplé à ng-model (je ne savais pas très bien comment l'utiliser) et change mais rien n'a fonctionné. Y a-t-il une disposition déjà présente dans la bibliothèque ou devons-nous détecter le changement et saisir la valeur du champ ?

12voto

Aakash Verma Points 1099

Résolu ! C'était change tout le temps.

Le plus beau, c'est qu'il ne se comporte pas comme un onkeypress et ne se déclenche que lorsqu'il y a un blur événement.

J'ai changé mon <input> comme ceci :

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

Le contrôleur ressemble à ceci :

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

Tout comme je voulais capturer les cas de champs vides ou de valeurs vides :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X