You’re using the same trigger name (myupvote) for every item in the list. So when you change myupvote, it affects every item in the list.
The most “Angulary” way to solve this is to create a Component named song-item, or something along those lines. Define the animation inside the component. Then the scope of the trigger name will be just that item. So the Component displays the item, performs the animation if the item is swiped, and uses an EventEmitter to tell your page, “I was the item swiped.” Your page template then ngFors over song-items, not ion-items.
Thanks for the help! I’m having trouble implementing this. I am a noob so please bear with me. I have managed to create a new component song-item, with song-item.ts containing the animation (including animations in @Component, defining upvoteState, and toggleUpvateAnim), but I can’t get the list to display as intended. The ngFor either creates all the list items, but they are empty and do not contain the information (artist, title, votes), or nothing at all is displayed.