J'ai un mat-table, à l'intérieur de la table j'ai ce mat-select:
<mat-select multiple placeholder="{{element.name}}" [(value)]="selectedCol" (selectionChange)="selectionChange($event)" [disabled]="!selection.isSelected(element.id)">
<div *ngFor="let item of col">
<div *ngIf="item.Id === element.id">
<mat-option [value]="item.id">
{{item.name}}
</mat-option>
</div>
</div>
</mat-select>
J'ai besoin d'obtenir la valeur qui a été désélectionnée, donc je peux la supprimer de la liste de valeurs sélectionnées, car chaque ligne de ma table est enregistrée dans une variable sur "selectionChange".
3 Réponses :
Du côté HTML
selectionChange(event: MatSelectChange) {
console.log(event.value)
}
du côté ts
(selectionChange)="selectionChange($event)"
où la valeur est la liste des objets (tableau)
p>
J'ai besoin d'obtenir la valeur qui a été désélectionnée pour pouvoir la supprimer de la liste des valeurs sélectionnées, car chaque ligne de ma table est enregistrée dans une variable sur "selectionChange".
Pourquoi ?? Angular fait le travail pour vous. Utilisez [(ngModel)] ou un FormControl
<mat-form-field> <mat-select placeholder="Toppings" [(formControl)]="toppings" multiple> <mat-option *ngFor="let topping of toppingList" [value]="topping">{{topping}}</mat-option> </mat-select> </mat-form-field> {{toppings.value|json}} //in your .ts toppings = new FormControl();ou
<mat-form-field> <mat-select placeholder="Toppings" [(ngModel)]="toppings" multiple> <mat-option *ngFor="let topping of toppingList" [value]="topping">{{topping}}</mat-option> </mat-select> </mat-form-field> {{toppings|json}} //in your .ts toppings:any[]=[]
Je l'ai compris. J'avais besoin de la valeur désélectionnée car j'ai plus de sélections de tapis avec le même ngModel / valeur. Pour le résoudre, j'ai utilisé la SelectionModel Class .
Ne pouvez-vous pas effectuer ces actions via votre (selectionChange) = "selectionChange ($ event)"?
Je ne peux pas, (selectionChange) ne renvoie que les valeurs sélectionnées, mais j'ai besoin de celle que j'ai désélectionnée.