Je veux changer la couleur d'arrière-plan de la ligne sélectionnée après avoir cliqué sur le bouton que j'ai essayé mais changer la couleur de toutes les lignes. Il s'agit d'un code similaire.
HTML
<tr *ngFor="let data of (datas$ | async) | filter:authService.filter | paginate: config | orderBy: key : reverse" [ngClass]="{'data-selected':isSelected}">
<td>{{data.id}}</td>
<td>{{data.text}}</td>
<td>
<a class="mr-3" (click)="delete(data.id)"><i class="fa fa-remove"></i>
Remove
</a>
</td>
</tr>
TS
delete(postId) {
this.isSelected=true;
const ans = confirm('TEXT TEXT '+dataid);
if (ans) {
this.dataService.deleteData(postId).subscribe((data) => {
if(data) {
this.showSuccessDelete();
} else {
this.showError();
}
this.isSelected=false;
this.loadDatas();
});
}
}
CSS
.data-selected{
background-color: #e9eaea;
}
Merci beaucoup
Vous pouvez ajouter un attribut à votre classe de composants et l'appeler selectedRow, qui obtiendra le data.id.
selectedRow: number;
delete(postId,numeroDeposito) {
this.selectedRow = postId;
const ans = confirm('TEXT TEXT '+dataid);
if (ans) {
this.dataService.deleteData(postId).subscribe((data) => {
if(data) {
this.showSuccessDelete();
} else {
this.showError();
}
this.isSelected=false;
this.loadDatas();
});
}
}
puis dans la balise tr, utilisez [ngClass]="{'data-selected': selectedRow === data.id}"
.
Vous pouvez également adopter l'approche suivante:
[class.data-selected]="data.isSelected"
et sur événement de clic.
(click)="data.isSelected = true";
Plutôt que de déclarer une variable isSelected
distincte. vous devez introduire est une propriété de l'objet data
. Ex:
{
id: 1,
name: 'AA',
isSelected: false
}
Ensuite, en cliquant, vous pouvez le basculer lorsque la fonction delete
est appelée avec data.id
comme paramètre.
deleteMe(id: string) {
this.data.map(x => x.isSelected = false);
this.data.find(x => x.id === id).isSelected = true;
}
Et en html
<tr *ngFor="let item of data" [ngClass]="{selected: item.isSelected}">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td><button (click)="deleteMe(item.id)">delete me</button></td>
</tr>
Voici un minimum exemple .
Vous pouvez utiliser un style conditionnel pour y parvenir.
<div [className]="( checkSelectedRow(i) ? 'example-class' : 'other-class'"></div>
Dans un fichier TypeScript:
checkSelectedRow(rowNumber) : boolean {
for(int j=0; j<rows.length; j++){
if(j==i){
rows[i]["selected"]=true; return true;
};
}
return false;
}
cela peut être résolu en créant un tableau de lignes sélectionnées comme celle-ci
deleteList = []
puis lorsque vous cliquez sur supprimer Poussez l'id de l'élément dans la liste
delete(id) {
this.deleteList.Push(id)
}
puis au modèle, utilisez la directive ngClass pour définir la classe si l'id de l'élément est inclus dans la liste
<tr *ngFor="let data of list" [ngClass]="{'data-selected':deleteList.includes(data.id)}">
....
</tr>