如何在angular TYPESCRIPT中禁用一个带有id的特定按钮?



它们是3张牌,每一张都有1个按钮"喜欢",我已经做了代码来检测他们的id,但现在我想知道如何禁用已被点击的按钮,并在另一个组件中创建一个表,显示已被点击的卡按钮的信息

提前谢谢你

TS

export class uneListe {
id: number = 0;
txt: string = '' ;
image: string = '';
titre: string = '';

}
export class AppComponent {
public list: Array<uneListe> = [];
public isDisabled:boolean=false;
title = 'Projettodo';
constructor(){

let likes:number = 0;
let save:number = 0;
;

let l: uneListe = { id: 1, titre : '1 Ultra - PINK'}
this.list.push(l);
l = { id: 2, titre : '2 Ultra - PINK'}
this.list.push(l);
l = { id: 3, titre : '3 Ultra - PINK'}
this.list.push(l);
}
idgets(n: uneListe){
if (n) { console.log(n.id); }
let whatid = n.id;
}

didLike(n: uneListe) {
if (n) { console.log(n.id); }

}

<mat-grid-list cols="3" rowHeight="1:2" >
<div *ngFor="let element of list">
<mat-grid-tile>
<mat-card>
<img src="{{element.image}}">
<h2>{{element.titre}}</h2>
<p>{{element.txt}}</p>
<button  (click) ="didLike(element)" [disabled]="isDisabled">LIKE</button>
<button   (click) ="didsave(element)" >SAVE</button>
</mat-card>
</mat-grid-tile>
</div>
</mat-grid-list>

要禁用按钮有多种方法。你可以像这样直接输入id

document.getElementById("myID").disabled = true;

另一个可能的解决方案是扩展你的数据模型,使用属性disabled/clicked或其他,并在这样的条件下使用它

let l: uneListe = { id: 1, titre : '1 Ultra - PINK', clicked: false}

然后在模板中像这样设置

<button  (click) ="didLike(element)" [disabled]="element.clicked">LIKE</button>

在这种情况下不要忘记切换click的值。你可以在didLike方法中做或者像这样

<button  (click) ="didLike(element); elemenet.clicked = !element.clicked" [disabled]="element.clicked">LIKE</button>

最新更新