В функции setCancelingText
, this
относится не к кнопке или событию, а к классу компонента, в котором вы в данный момент работаете. Из-за этого вы меняете текст content
- переменная для всех кнопок.
Мой подход к исправлению будет работать следующим образом:
В модели BuildingImage
добавьте свойство для текста кнопки отмены: *
cancelButtonText?: string;
Измените функцию populateBuildingImageList
, чтобы определить пустые свойства, когда они появятся в вашем компоненте:
private populateBuildingImageList(): void {
this.builderService.getBuildingImageList().then(response => {
this.buildingImageErrorMessage = null;
for (let item of response) {
item.cancelButtonText = "Cancel build";
}
this.buildingImageList = response;
this.convertDurationToDate();
}).catch(() => {
this.buildingImageErrorMessage = "Oops, there was an error getting the company list.";
});
}
Затем измените кнопку следующим образом:
<button mat-flat-button color="accent"
(click)="cancelBuildingImage(element.buildId); setCancelingText(element);">
{{element.cancelButtonText}}
</button>
Наконец, измените setCancelingText
-функция к этому:
setCancelingText(element) {
element.cancelButtonText = "Canceling...";
}
Лично я бы также включил изменение кнопки отмены в функцию cancelBuildingImage
, но вы не поделились тем, что она делает, и была ли setCancelingText
Функция вызывается откуда-то еще, поэтому я оставил ее на месте.
*) Здесь я предполагаю, что BuildingImage
- это класс. Если это интерфейс, вам нужно будет добавить текст при создании объекта.