Leaving aside the wisdom of 1000-item lists in general, I don’t understand what you are talking about with reloading of pages and new requests. Angular change detection is going to be both more readable and do a better job of dealing with a structure like the following than any homebrew manual DOM manipulation would, which seems to be more or less what you are asking for:
fruits = [
{name: "apple"},
{name: "banana"},
{name: "cherry"},
];
mogrifyColor(fruit): void {
fruit.color = fruit.color === 'red' ? 'blue' : 'red';
}
<ion-item *ngFor="let fruit of fruits">
<button ion-button [style.background-color]="fruit.color" (click)="mogrifyColor(fruit)">{{fruit.name}}</button>
</ion-item>