At first, you just spawned a weapon (actor) and attached it to your player (I guess) at a specific socket, right?
If so, you could store weapon actor in a variable, and when you wish to change, you call DestroyActor on this variable, spawn new weapon, attach it, and update variable.
You shouldn’t have to use / delete WeaponSlot if I understood right